Передать символ равенства в строку - PullRequest
0 голосов
/ 25 апреля 2018

VBScript на самом деле не моя вещь, но с толку.

По сути, у меня есть скрипт, который будет смотреть в текстовом файле, содержащем набор имен компьютеров, затем будет проверять, запущена ли служба, если это так, остановить и отключить ее, если не работает, проверить, включена ли она, а затем отключена. Это. Выход из начального состояния и конечного состояния.

Попытка улучшить сценарий, чтобы иметь возможность сделать обратное - т.е. включить и запустить. Они будут запускаться из запланированной задачи Windows, поэтому нужно просто передать параметр, скажем, «Вкл» или «Выкл»

Итак, что-то вроде этого вверху:

Function Toggle
    If UCase(WScript.Arguments(0)) = "ON" Then  states = "Running" End If 
    If UCase(WScript.Arguments(0)) = "OFF" Then  states =  "Running" End If 
    If UCase (WScript.Arguments(0)) = "ON" Then symbol = " = " End If
    If UCase (WScript.Arguments(0)) = "OFF" Then  symbol = " <> " End If 
End Function

Но еще ниже, когда я пытаюсь использовать их для сравнения состояния службы, используя:

If InStr(objProcess.DisplayName,strService) > 0 And objProcess.State & symbol & states  Then Status = True 

Ошибка времени выполнения Microsoft VBScript: Несоответствие типов: '[string: "Stopped = Running"]'

Если я закомментирую символьную переменную и использую символ =, сравнение сработает.

Можно ли передать = или <> в строку для сравнения?

Пробовал использовать cstr вокруг всех переменных, но это не имело значения.

1 Ответ

0 голосов
/ 25 апреля 2018

Причина возникновения проблемы заключается в том, что, как описано выше, вы фактически пытаетесь выполнить логическую операцию над объединенной строкой.

Вы можете обойти это одним из двух способов - ((почти) добро путь и зло путь - ваш выбор ...

ХОРОШО

Напишите небольшой процессор для оценки строк ...

If symbol = "=" Then...

ЗЛО

(Пусть ваша душа кипит в аду всю вечность ...)

Не верьте обману - есливы правильно спланируете и очистите свои строки, у вас все будет хорошо.

Eval - это ключ, или, скорее, в случае VBScript, Execute.

Простобудьте очень осторожны - это открыто для злоупотреблений .

также, ваша ситуация на самом деле может не подходить для Execute.Возможно, вам придется использовать первый или «Хороший» вариант выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...