Как сохранить окно команды 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 для достижения этого:

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