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

У меня этот скрипт сохранен в “test.vbs”:

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

Когда я запускаю скрипт, я хочу передать значение переменной «workFolder».

Как я могу это сделать? Могу ли я это сделать? Что-то вроде «cscript test.vbs workFolder:« C: \ temp », возможно?

Бонусный вопрос: необходимо ли очищать переданную переменную с помощью «Set workFolder = Nothing» или VBSCript делает это автоматически, когда он завершается? Может быть, «Set File = Nothing» и «Set FSO = Nothing» тоже не требуется? Пожалуйста, дайте мне знать, если вы знаете ответ на оба этих вопроса.

Вы можете использовать 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?

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

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

и так далее. Число параметров:

 Wscript.Arguments.Count 

Доступ к любому аргументу, переданному через командную строку, можно получить с помощью: 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

На самом деле ответ на бонусный вопрос: «Нет». Вам не нужно чистить. Но общая практика программирования заключается в том, чтобы всегда очищать ваши вещи, например, после вашего обеда, pls очистить вашу тарелку.

При обучении новых программистов правильный ответ на вопрос «должен ли я убирать?» всегда да. Если кто-то привык убирать, то он будет убираться. Затем, когда это действительно необходимо (чтобы не сделать беспорядок кучи и т. Д.), Очистка – привычка и произойдет.

Лучший вопрос: «Это вызывает проблему, если я убираюсь в конце этого скрипта?» или даже лучше … »Предполагая, что я продолжаю с длинным сценарием (или у меня нет GC), это правильный способ очистки этих объектов?»

мои два цента. Павел

  • В C #, что происходит, когда вы вызываете метод расширения на нулевом объекте?
  • c # Использование Parameters.AddWithValue в SqlDataAdapter
  • Игнорирование параметра NULL в T-SQL
  • Передача функции в качестве параметра в java
  • Параметр, проходящий в C - указатели, адреса, псевдонимы
  • Зачем использовать ключевое слово params?
  • Как установить значение по умолчанию для поля модели Django для вызова функции / вызываемого (например, даты относительно времени создания объекта модели)
  • Bash: манипуляция со строками (знак процента)
  • Передача только типа параметра в C #
  • В чем разница между свойствами Dependency SetValue () и SetCurrentValue ()
  • Как использовать функцию эллипсиса R при написании собственной функции?
  • Давайте будем гением компьютера.