Kurz gesagt: Wir erhalten einen Befehl von einem Skript und möchten ihn mithilfe der Windows-Shell ausführen.
Derzeit verwenden wir eine Methode ähnlich der:
echo start & command & echo finish
Das funktioniert einwandfrei, es sei denn, der Befehl enthält ein eigenes Et-Zeichen, also zum Beispiel
echo begin & if exist c:\temp.txt echo 1 & echo end
Das Schreiben von „Ende“ schlägt fehl, wenn die Datei nicht existiert.
Dies kann gelöst werden, indem der Befehl in geändert wird echo begin & (if exist c:\temp.txt echo 1) & echo end
. Dann treten jedoch Probleme bei Befehlen auf, die Klammersymbole enthalten, beispielsweise
echo begin & (echo %PATH%) & echo end
druckt „\Hewlett-Packard\HP war zu diesem Zeitpunkt unerwartet.“ weil ich Programme (x86) im Pfad habe.
Gibt es eine Möglichkeit, Sonderzeichen aus dem Befehlsergebnis zu maskieren?
Dank im Voraus
Antwort1
Das Problem sind die Leerzeichen im PATH. Verwenden Sie daher Anführungszeichen.
echo begin & (echo "%PATH%") & echo end