Ich brauche eine Batchdatei, die zwei Parameter empfängt: einen Befehl (Dateiname mit einigen Argumenten) und einen Pfad zu einer Datei – zur Ausgabeumleitung der Befehlsausführung. Ich habe einige Varianten ausprobiert call %1 > %2
, wie start %1 > %2
in der Datei „q.cmd“, mit Aufruf als q "echo test" "log.txt"
und q 'echo test' 'log.txt'
und %1
oder call %1
mit q "echo test > log.txt"
, aber nichts funktioniert. Ich habe es auch mit ^
vorher versucht >
. In den meisten Fällen wird „‚echo wird nicht als interner oder externer Befehl erkannt …“ oder so etwas ausgegeben und manchmal wird eine leere 123.txt oder mit einigen Servicezeilen erstellt, aber nicht mit „test“, wie ich es brauche. Wie kann ich das Problem lösen?
Antwort1
q "echo test" "log.txt"
würde zwei Parameter eingeben.
„Echotest“ stünde für sich allein und wäre nicht mehr „Echo“ gefolgt von „Test“ als Argument für Echo, sondern stattdessen ein einzelner Befehl namens „Echotest“, was ungültig ist.
Sie müssen die Argumente von den Befehlen trennen, und Batch-Scripting ist NICHT die beste Methode hierfür, insbesondere wenn Sie eine dynamische Anzahl von Argumenten wünschen. Versuchen Sie stattdessen, PowerShell zu verwenden.
Wenn Sie jedoch etwas Einfaches und nicht so Flexibles möchten, das trotzdem eine Batchdatei ist, versuchen Sie vielleicht Folgendes in Ihrer Batchdatei:
%2 %3 > %1
.
Geben Sie dann einfach zuerst die Ausgabedatei an, gefolgt vom Befehl und dem Argument, das Sie mit diesem Befehl verwenden möchten.
IE: q log.txt echo Test
, oder q log.txt echo "string with spaces to echo"
.
Diese funktionieren bei mir. :)