Exibir uma caixa de diálogo de mensagem após um comando com um script em lote?

Exibir uma caixa de diálogo de mensagem após um comando com um script em lote?

Estou criando scripts em lote para diversos fins e quero fazer com que, após a conclusão de um comando, seja exibida uma caixa de diálogo de mensagem declarando os resultados.

Por exemplo, se eu fizer um script excluir um objeto específico, gostaria que ele exibisse uma caixa de diálogo definida pelo usuário. Eu preferiria usar este formato para o título da janela e valores de texto:

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

Como posso adicionar isso (acima) ao meu script para ser exibidodepoisa tarefa (abaixo) foi concluída?

rmdir "%TARGETPATH%

Responder1

Você pode usar o comandoredirecionamentocom &&ou &para executar um comando seguinte após a conclusão do primeiro comando. Você pode configurá-lo para executar o comando seguinte após o primeiro comando ser bem-sucedido ou diretamente após a execução do primeiro comando, independentemente do resultado do primeiro comando.

O truque é fazer com que o script em lote coloque o VBmsgBoxfunção e valores aplicáveis ​​que ela usa em um script temporário que será executado posteriormente viascript.

Tudo isso deve funcionar imediatamente, sem a instalação de ferramentas de terceiros, por isso éjanelasnativo.


Script em lote

Observação: Você precisará usar a sintaxe de SET x=msgbox "%TITLE%",0,"%MESSAGE%"em vez da sintaxe que você possui para que isso funcione, mas isso é apenas um pequeno ajuste.

@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

Redirecionamento

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

Recursos adicionais

informação relacionada