2

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

Вот мой текущий сценарий:

set targetfilepath=%TARGETPATH%
%SYSTEMROOT%\explorer.exe /select, "%TARGETFILEPATH%"

Могу ли я включить это в свой сценарий? Если так, где я должен поместить это?

IF NOT EXIST goto net send localhost "%MESSAGETXT%"

3 ответа3

4
set MESSAGETXT="Your Text Goes Here"
set TARGETPATH="Your Path Goes Here"
IF NOT EXIST "%TARGETPATH%" GOTO ERROR
%SYSTEMROOT%\explorer.exe /select, "%TARGETFILEPATH%"
GOTO END
:ERROR
msg "Username" "%MESSAGETXT%"
:END

У тебя почти было это. SS64 ваш друг, когда дело доходит до пакетного программирования. И общее использование командной строки: вот их сайт. Я не имею никакого отношения к ним.

РЕДАКТИРОВАТЬ: Wow да, я сделал некоторые плохие предположения там и просто добавил код без тестирования / просмотра. Windows 7 больше не имеет net send , но вместо этого использует msg . Я обновил свой ответ, и он работает в моей системе. Вы можете добавить команду PAUSE в конце, если хотите, чтобы командная строка оставалась видимой, пока вы не нажмете клавишу, чтобы избавиться от нее.

1

К сожалению, скрипт, предоставленный @Blerg , не работал *(для меня). Я решился на Stack Overflow, нашел эту ветку и использовал ее вместе со сценарием @ Blerg. Сценарий теперь может выдать сообщение об ошибке, используя этот сценарий, который я создал вместе:

IF NOT EXIST "%TARGETPATH%" GOTO ERROR
%SYSTEMROOT%\explorer.exe /select, "%TARGETPATH%"
GOTO END
:ERROR
START CMD /C "ECHO The target could not be located because it does not exist! && PAUSE"
:END

(Все, что мне нужно было сделать, это заменить пятую строку.)

Даже при том, что это работает, я также хотел бы использовать более чистый диалог для сообщения об ошибке, как этот сценарий VBS может сделать:

x=msgbox("%WINDOWTEXT%" ,0, "%WINDOWTITLE%")

Могу ли я включить такой метод в пакетный сценарий или я должен преобразовать пакетный сценарий в базовый сценарий Visual?

1

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

Да, вы можете запустить msgbox с помощью пакетного скрипта, используя wscript, как в приведенном ниже примере. Поскольку вы также указали, что хотите « использовать более чистый диалог для сообщения об ошибке », я использовал верхнюю строку, чтобы установить переменную и снова запустить пакетный скрипт, но с параметром /MIN чтобы окно пакета не было таким заметным. Просто удалите верхнюю строку, если вы не хотите ее использовать.

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

Обязательно установите значения для переменных SET TARGETPATH= , SET msgboxTitle= и SET msgboxBody= для ваших нужд соответственно.

IF NOT DEFINED MINIMIZED SET MINIMIZED=1 && START "" /MIN "%~dpnx0" %* && EXIT

SET TARGETPATH=C:\Users\User\Desktop\Test
IF NOT EXIST "%TARGETPATH%" GOTO :ERROR
%SYSTEMROOT%\EXPLORER /SELECT, "%TARGETPATH%"
GOTO :END

:ERROR
SET msgboxTitle=This is my Message Title
SET msgboxBody=This is my Message Body
SET tmpmsgbox=%temp%\~tmpmsgbox.vbs
IF EXIST "%tmpmsgbox%" DEL /F /Q "%tmpmsgbox%"
ECHO msgbox "%msgboxBody%",0,"%msgboxTitle%">"%tmpmsgbox%"
WSCRIPT "%tmpmsgbox%"

:END

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

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