Как сохранить окно команды VBScript открытым во время выполнения

Когда я выполняю VBScript, окно командной строки, которое он создает, быстро закрывается, прежде чем пользователь получает возможность прочитать вывод. Как я могу получить окно, чтобы остаться открытым без изменения реестра Windows?

Это код:

Set objShell = WScript.CreateObject("WScript.shell") 
objShell.Run "SyncToyCmd.exe -R", 1, True

3 ответа

Решение

Вы можете отправить команду выполнения через cmd.exe интерпретатор команд, а также команда паузы, которая даст пользователю Press any key to continue . . . подскажите, чтобы закрыть окно.

objShell.run "%comspec% /c ""SyncToyCmd.exe -R & pause""", 1, True

Или чтобы сохранить окно живым, используйте /k флаг вместо /c:

objShell.run "%comspec% /k SyncToyCmd.exe -R", 1, True

Но будьте осторожны, ваш VBScript не продолжится (или не прекратит работу), пока это окно cmd не будет закрыто вручную.

%comspec% Переменная окружения относится к правильной команде, чтобы открыть интерпретатор команд в соответствии с вашей операционной системой. На моей машине XP, например, %comspec% равно C:\WINDOWS\system32\cmd.exe,

Увидеть cmd.exe документация здесь: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true

Для получения дополнительной информации об использовании & по сравнению с && разделитель команд: https://support.microsoft.com/en-us/kb/279253

Предполагая, что это всплывающее окно команд, которое вы хотите оставить открытым (а не окно, на котором работает ваш VBScript), вы можете использовать CMD.exe"s Pause Команда для достижения этого:

Set objShell = WScript.CreateObject("WScript.shell") 
objShell.Run "cmd.exe /C ""SyncToyCmd.exe -R & Pause"" ", 1, True

Задержите его на время, может быть, скажите пользователю, что он закроется через 5 секунд?

Set WScript = CreateObject("WScript.Shell") 
WScript.Sleep 5000
Другие вопросы по тегам