Могу ли я передать аргумент 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 », возможно?
- Должен ли компилятор указывать / предупреждать при передаче экземпляров объекта непосредственно в качестве параметров интерфейса const?
- Могу ли я заставить функцию plpgsql возвращать целое число без использования переменной?
- Могу ли я создать представление с параметром в MySQL?
- Аргументы или параметры?
- struts2 s: элемент формы выравнивает параметр s: url в атрибуте действия
Бонусный вопрос: необходимо ли очищать переданную переменную с помощью «Set workFolder = Nothing» или VBSCript делает это автоматически, когда он завершается? Может быть, «Set File = Nothing» и «Set FSO = Nothing» тоже не требуется? Пожалуйста, дайте мне знать, если вы знаете ответ на оба этих вопроса.
- В чем разница между «$ @» и «$ *» в Bash?
- Параметры SqlCommand Добавить и AddWithValue
- Шаблон строителя и большое количество обязательных параметров
- Добавить значения в строку запроса
- Как получить параметр URL в Express?
- Что такое «String args »? параметр в основном методе Java
- Почему компиляция функции без параметров (по сравнению с фактическим определением функции)?
- Как вы отправляете собственный заголовок в междоменном (CORS) XMLHttpRequest?
Вы можете использовать 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), это правильный способ очистки этих объектов?»
мои два цента. Павел