4

Я делаю пакетные сценарии для различных целей и хочу, чтобы после выполнения команды отображался диалог с сообщением о результатах.

Например, если я заставлю скрипт удалить конкретный объект, я бы хотел, чтобы он отображал пользовательский диалог. Я бы предпочел использовать этот формат для заголовка окна и текстовых значений:

x=msgbox("%MESSAGE%" ,0, "%TITLE%")

Как я могу добавить это (выше) в мой скрипт, который будет отображаться после завершения задачи (ниже)?

rmdir "%TARGETPATH%

1 ответ1

4

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

Хитрость заключается в том, чтобы пакетный сценарий поместил функцию VB msgBox и соответствующие значения, которые он использует, во временный сценарий, который впоследствии будет выполнен через wscript.

Все это должно работать "из коробки" без установки каких-либо сторонних инструментов, так что это Windows родной.


Пакетный скрипт

Примечание. Вам нужно будет использовать синтаксис SET x=msgbox "%TITLE%",0,"%MESSAGE%" а не то, что у вас есть, чтобы это работало, но это только незначительная корректировка.

@ECHO ON

:Routine1
SET TARGETPATH=C:\Path\Folder
SET COMMAND=rmdir "%TARGETPATH%
SET TITLE=This is my message title
SET MESSAGE=This is my message body
SET tmpmsgbox=%temp%\~tmpmsgbox.vbs
SET x=msgbox "%MESSAGE%",0,"%TITLE%"
ECHO %x%>"%tmpmsgbox%"
%COMMAND% && WSCRIPT "%tmpmsgbox%"
EXIT

Перенаправление

   commandA &  commandB      Run commandA and then run commandB
   commandA && commandB      Run commandA, if it succeeds then run commandB

Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .