Meldungsdialog nach einem Befehl mit einem Batch-Skript anzeigen?

4

Ich erstelle Batch-Skripte für verschiedene Zwecke und möchte, dass nach Abschluss eines Befehls ein Meldungsdialogfeld angezeigt wird, in dem die Ergebnisse deklariert werden.

Wenn ich zum Beispiel ein Skript veranlasse, ein bestimmtes Objekt zu löschen, möchte ich, dass es einen benutzerdefinierten Dialog anzeigt. Ich würde es vorziehen, dieses Format für den Fenstertitel und die Textwerte zu verwenden:

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

Wie kann ich dieses (oben) zu meinem Skript hinzufügen, um es nach Abschluss der Aufgabe (unten) anzuzeigen ?

rmdir "%TARGETPATH%
Mr. Mendelli
quelle
Ich gebe Ihnen einen Tipp zum Start <command> &&: ss64.com/nt/syntax-redirection.html
Pimp Juice IT
Wenn ich das also richtig interagiere, muss ich die Aufgabe als commandAund die Ergebnismeldung als festlegen commandB? Wenn das stimmt, habe ich keine Ahnung, wie ich das im Skript diktieren soll. Ich denke, ich komme auf diesen
Punkt
Vielen Dank, ich wollte das anhand Ihrer Referenz herausfinden, wäre Ihrer Antwort aber ehrlich gesagt einige Zeit nicht einmal nahe gekommen.
Mr. Mendelli

Antworten:

4

Sie können die Befehlsumleitung mit oder verwenden , um einen Weiterleitungsbefehl auszuführen, nachdem der erste Befehl ausgeführt wurde. Sie können festlegen, dass der folgende Befehl ausgeführt wird, nachdem der erste Befehl erfolgreich ausgeführt wurde, oder direkt, nachdem der erste Befehl ausgeführt wurde, unabhängig vom Ergebnis des ersten Befehls.&&&

Der Trick besteht darin, dass das Batch-Skript die VB- msgBox- Funktion und die anwendbaren Werte, die es verwendet, in ein temporäres Skript setzt, das später über wscript ausgeführt wird .

Dies sollte alles ohne Installation von Tools von Drittanbietern funktionieren, so dass Windows nativ ist.


Batch-Skript

Hinweis: Sie müssen die Syntax von verwenden SET x=msgbox "%TITLE%",0,"%MESSAGE%", damit dies funktioniert. Dies ist jedoch nur eine geringfügige Änderung.

@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

Umleitung

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

Weitere Ressourcen

Pimp Juice IT
quelle
Ihre Antwort hat ausnahmsweise funktioniert, aber ich muss beachten, dass bei Verwendung der temporären vbs-Nachrichtenmethode der Nachrichtentitel und der Text aus irgendeinem Grund vertauscht sind. Ich habe es einfach durch Umschalten der Variablen behoben.
Mr. Mendelli
1
@ Mr.Mendelli Ah, das habe ich von Ihrer Frage kopiert und in der gleichen Reihenfolge belassen und es einfach nicht bemerkt. Ich habe die Antwort aktualisiert und auch die im Beispielskript geändert. Ich bin froh zu hören, dass es für Sie gut funktioniert hat.
Pimp Juice IT
Kein Problem, ich habe meine Frage auch entsprechend aktualisiert. Tolle Arbeit wie immer.
Mr. Mendelli