Como criar uma mensagem de erro em um script em lotes se o destino não estiver presente?

2

Fiz um modelo de script em lote que posso programar para selecionar um determinado destino, mas gostaria que o script também exibisse um diálogo de erro personalizado se o destino ainda não está presente na máquina do usuário final.

Este é o meu script atual:

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

Posso incorporar isso ao meu script? Se sim, onde devo colocá-lo?:

IF NOT EXIST goto net send localhost "%MESSAGETXT%"
    
por Mr. Mendelli 04.07.2017 / 06:29

3 respostas

1

I would also like to use a cleaner dialog for the error message. Can I incorporate such a method into the batch script?

Sim, você pode executar msgbox com um script em lote usando wscript como no exemplo que forneci abaixo. Como você também indicou que queria " usar um diálogo mais limpo para a mensagem de erro ", usei a linha superior para definir uma variável e inicie o script em lote novamente, mas com a opção /MIN para evitar que a janela do lote seja tão perceptível. Simples, remova a linha superior se você não quiser usá-la.

Script em lote

Certifique-se de definir os valores para as variáveis SET TARGETPATH= , SET msgboxTitle= e SET msgboxBody= de acordo com suas necessidades.

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

Mais recursos

por 05.07.2017 / 04:50
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

Você quase teve. SS64 é seu amigo quando se trata de programação em lote. E o uso geral da linha de comando também: Aqui está o site deles. Não tenho afiliação com eles.

EDITAR: Uau, sim, eu fiz algumas suposições ruins lá e adicionei o código sem testar / olhar para ele. O Windows 7 não tem mais net send , mas usa msg . Atualizei minha resposta e funciona no meu sistema. Você pode adicionar um comando PAUSE no final se quiser que a linha de comando permaneça visível até que você pressione uma tecla para se livrar dela.

    
por 04.07.2017 / 10:39
1

Infelizmente, o script fornecido por @Blerg não funcionou * (para mim). Eu me aventurei no estouro de pilha e encontrei este thread e usado em conjunto com o script do @Blerg. O script agora pode lançar uma mensagem de erro usando este script que eu joguei junto:

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

(Tudo o que eu tive que fazer foi substituir a quinta linha.)

Mesmo que isso funcione, eu também gostaria de usar um diálogo de limpeza para a mensagem de erro como este script VBS pode fazer:

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

Posso incorporar esse método ao script em lote ou devo traduzir o script em lote em um script visual básico?

    
por 05.07.2017 / 01:09