Я могу передать аргумент VBScript (vbs файл, запущенный с cscript)?

Что касается C #, то в некоторых смыслах интерфейсы и абстрактные классы могут быть взаимозаменяемыми. Однако различия заключаются в следующем: i) интерфейсы не могут реализовать код; ii) из-за этого интерфейсы не могут переходить к стеку до подкласса; и iii) только абстрактный класс может быть унаследован в классе, тогда как несколько классов могут быть реализованы в классе.

78
задан Peter 10 May 2010 в 21:52
поделиться

4 ответа

Вы можете использовать WScript.Arguments для доступа к аргументам, переданным вашему сценарию.

Вызов скрипта:

cscript.exe test.vbs "C:\temp\"

Внутри вашего скрипта:

Set File = FSO.OpenTextFile(WScript.Arguments(0) &"\test.txt", 2, True)

Не забудьте проверить, был ли на самом деле передан аргумент вашему скрипту. Вы можете сделать это, проверив свойство Count:

if WScript.Arguments.Count = 0 then
    WScript.Echo "Missing parameters"
end if

Если ваш скрипт завершен после закрытия файла, то нет необходимости устанавливать переменные в Nothing. Ресурсы будут очищены автоматически при завершении процесса cscript.exe. Установка переменной в значение Nothing обычно необходима только в том случае, если вы явно хотите освободить ресурсы во время выполнения сценария. В этом случае вы установите переменные, содержащие ссылку на COM-объект, в значение Nothing, что приведет к освобождению COM-объекта перед завершением сценария. Это лишь краткий ответ на ваш бонусный вопрос, больше информации вы найдете в следующих вопросах:

Есть ли необходимость устанавливать объекты в Nothing внутри функций VBA

Когда я должен установить переменную в "Nothing" в VB6?

130
ответ дан 24 November 2019 в 10:34
поделиться

Для ответа на бонусный вопрос общий ответ не, Вы ни на "Что" не должны устанавливать переменные в коротких.VBS сценариях как Ваши, которые называют Wscript или Cscript.

причина Вы могли бы сделать, это посреди более длинного сценария должно освободить память назад к операционной системе, которую иначе содержал бы VB. В эти дни, когда 8 ГБ RAM типичны и 16 ГБ + относительно распространенный, это вряд ли произведет любое измеримое влияние, даже на огромном сценарии, который имеет несколько мегабайтов в единственной переменной. В этой точке это - своего рода пережиток со дней, где Вы, возможно, работали в 1 МБ или 2 МБ RAM.

Вы корректны, момент, который завершает Ваш.VBS сценарий, все Ваши переменные уничтожаются, и память исправлена так или иначе. Установка переменных ни к "Чему" просто ускоряет тот процесс и позволяет Вам делать это посреди сценария.

0
ответ дан 24 November 2019 в 10:34
поделиться

Внутри VBS вы можете получить доступ к параметрам с помощью

Wscript.Arguments(0)
Wscript.Arguments(1)

и так далее. Номер параметра:

Wscript.Arguments.Count
18
ответ дан 24 November 2019 в 10:34
поделиться

К каждому аргументу, переданному через командную строку, можно получить доступ с помощью: Wscript.Arguments.Item(0) Где ноль - это номер аргумента: т.е. 0, 1, 2, 3 и т.д.

Таким образом, в вашем коде может быть:

strFolder = Wscript.Arguments.Item(0) 

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(strFolder, 2, True)
File.Write "testing"
File.Close
Set File = Nothing
Set FSO = Nothing
Set workFolder = Nothing

Используя wscript.arguments.count, вы можете отлавливать ошибки, если кто-то не введет правильное значение и т.д.

Примеры MS Technet

5
ответ дан 24 November 2019 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: