Ich vermute, Sie versuchen, eine Batch-Datei auf die harte Tour neu zu erfinden.
Wenn Sie eine Reihe von Aufgaben ausführen müssen cmd.exe
verwenden, laichen sie
set cmd [open |cmd.exe "r+"]
und anschließend einfach Ihre Batch-Skript zu diesem Stream schreiben:
puts $cmd $myscript
zu erklären: Schalen (Tcl eigene tclsh
und wish
enthalten) haben in der Regel zwei Modi der Ausführung: interaktive und nicht interaktive. Die Tabelle wird aktiviert, wenn die Shell gestartet wird "wie sie ist", die zweite —, wenn sie in einer Pipeline gestartet wird. Im interaktiven Modus zeigt die Shell die Eingabeaufforderung an und akzeptiert die Befehle — interaktiv. In einem nicht interaktiven Modus liest es nur Befehle auf seinem standard input stream und führt sie aus, wie es sie liest. Die cmd.exe
von Windows ist keine Ausnahme, so können Sie open |cmd.exe
es in "lesen/schreiben" -Modus (r+
) schreiben und das Skript in seiner Batch-Befehlssprache zu seinem Standard-Eingabe-Stream, der an das Stream-Objekt open
zurückgegeben wird zurückgibt.
Wenn ein Prozess begann mit open
oder exec
schreibt etwas auf seinen Standard Fehler Strom und/oder beendet mit einem Nicht-Null-Exit-Code, werden diese Befehle eine Ausnahme ausgelöst (das heißt, die Fehlerbehandlung vor allem für Sie abgedeckt).
Nun, für Windows, ist es schwieriger, zu definieren, was „interaktiv“ vs „nicht interaktiven“ bedeutet, aber es ist etwas irrelevant für die Frage auf der Hand.
Sie sollten 'Expect' für interaktive CLI-Sitzungen verwenden. – Dinesh