Wie kann ich den Vorgang „Stapeldruck“ durch eine Meldung ersetzen?

Wie kann ich den Vorgang „Stapeldruck“ durch eine Meldung ersetzen?

Ich arbeite an einem einfachen Tool, das Dateien von und zu gewünschten Orten kopiert, und ich möchte den Ausdruck in der CLI durch eine Nachricht meiner Wahl ersetzen. Ich habe mich umgesehen, aber alle Lösungen, die ich bisher gefunden habe, implementieren nicht das, wonach ich suche. Hier ist ein Ausschnitt meines Codes:

@ECHO OFF
ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Code Snippets" ".\Backup\Code Snippets" /s /q /y
ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" ".\Backup\Projects" /s /q /y
ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Templates" ".\Backup\Templates" /s /q /y

Ich möchte eine Nachricht anzeigen lassen, die etwa so aussieht:"Sicherung läuft..."anstatt dass jede Operation angezeigt wird. Ich habe Kombinationen aus PRINT, ECHO, und sogar ausprobiert CLS, um den Fensterinhalt zu ersetzen, aber ich bekomme es nicht zum Laufen. Was übersehe ich? Ich habe gesehen, dass andere Batch-Skripte dies tun(von dem ich mir keine Notizen mehr machen muss)und würde das auch gerne tun.

Antwort1

Fügen Sie am Ende eine Umleitung Ihrer Wahl hinzu, die nicht auf STDOUT liegt. Beispielsweise >nuloder >file.txtund entsprechende Echo-Anweisungen. Auf diese Weise können Sie während der Ausführung keinen Fortschritt anzeigen xcopy.

echo "Copy in progress"
xcopy > nul
echo "Copy finished"

Die Fehlerbehandlung usw. könnte auf diese Weise komplizierter sein.

Antwort2

Verwenden

  1. das @Befehlspräfix, um die Anzeige eines einzelnen Befehls zu vermeiden;
  2. echo offum die Anzeige aller zukünftigen Befehle zu vermeiden (bis sie erneut aktiviert werden).

Dies wird am häufigsten @echo offals allererstes Element in Ihrem Skript kombiniert.

verwandte Informationen