Ich habe ein "Setup" -Skript, das ich am Morgen ausführe und das alle Programme startet, die ich brauche. Jetzt benötigen einige von ihnen eine zusätzliche Einrichtung der Umgebung, sodass ich sie in kleine BAT-Skripte einschließen muss.
Wie führe ich ein solches Skript unter Windows XP im Hintergrund aus?
CALL env-script.bat
führt es synchron aus, dh das Setup-Skript kann erst fortgesetzt werden, nachdem der Befehl im env-Skript beendet wurde.
START/B env-script.bat
führt eine andere Instanz von CMD.exe in derselben Eingabeaufforderung aus und belässt sie in einem sehr unordentlichen Zustand (ich sehe die Ausgabe der verschachtelten CMD.exe, die Tastatur ist für eine Weile tot, das Skript wird nicht ausgeführt).
START/B CMD env-script.bat
ergibt das gleiche Ergebnis. Keine der Flaggen in CMD scheint meiner Rechnung zu entsprechen.
quelle
Zwei Jahre alt, aber der Vollständigkeit halber ...
Standard-Inline-Ansatz: (dh Verhalten, das bei Verwendung
&
unter Linux auftreten würde)Anmerkungen: 1.
CALL
ist mit der .bat-Datei gekoppelt, da dies normalerweise der Fall ist. (Dies ist nur eine Erweiterung desCMD /C CALL "foo.bat"
Formulars, um es asynchron zu machen. Normalerweise ist es erforderlich, Exit-Codes korrekt abzurufen, aber das ist kein Problem Hier.); 2. Doppelte Anführungszeichen um die .bat-Datei sind nur erforderlich, wenn der Name Leerzeichen enthält. (Der Name könnte ein Pfad sein. In diesem Fall ist die Wahrscheinlichkeit größer.)Wenn Sie die Ausgabe nicht möchten:
Wenn Sie möchten, dass der Schläger auf einer unabhängigen Konsole ausgeführt wird: (dh einem anderen Fenster)
Wenn Sie möchten, dass das andere Fenster danach herumhängt:
Hinweis: Dies ist eine schlechte Form, es sei denn, Sie haben Benutzer, die das geöffnete Fenster speziell als normale Konsole verwenden möchten. Wenn Sie nur möchten, dass das Fenster bleibt, um die Ausgabe zu sehen, ist es besser, ein
PAUSE
am Ende der Bat-Datei zu setzen. Oder fügen Sie^& PAUSE
nach der Befehlszeile Folgendes hinzu:quelle
&
ist ein "und dann" (Terminologie?) Operator. (zBcmd1 & cmd2
Mittel tun „cmd1“ und dann „cmd2“. Im Gegensatz zu dem&&
Operator, die Ausführung von „cmd2“ hängt nicht von dem erfolgreichen Ausgang von „cmd1“) . Das^
dem entweicht ,&
so dass es in CMD Argumente geht stattdessen verbraucht zu werden und von derselben Konsole ausgeführt werden, auf der START ausgeführt wurde.start
undcmd
nicht die volle Funktionalität geben habe ich gesucht. Ihre Antwort nagelt es.START /B "" CMD /C "foo.bat" [args [...]] ^>nul 2^>^&1
START /B "" CMD /C PING 127.0.0.1 >NUL
scheint es trotzdem zu funktionieren und nichts wird ausgegeben. (Wahrscheinlich, weil erCMD
dieSTART
E / A-Handles erbt .) Ich denke, der Unterschied besteht darin, dass Sie dieSTART
(Fehler-) Ausgabe intakt halten möchten , was wahrscheinlich eine gute Idee ist.CALL
ist nur da, weil ich dachte, es ist eine gute Praxis, sie zu behalten. (dh die NichtverwendungCALL
für synchrone Fledermausrufe führt zu unvorhersehbaren Exit-CodesCALL
.Da START die einzige Möglichkeit ist, etwas im Hintergrund über ein CMD-Skript auszuführen, würde ich empfehlen, dass Sie es weiterhin verwenden. Versuchen Sie anstelle des Modifikators / B / MIN, damit Sie das neu erstellte Fenster nicht stört. Außerdem können Sie mit / LOW oder / BELOWNORMAL die Priorität auf einen niedrigeren Wert einstellen, um die Reaktionsfähigkeit Ihres Systems zu verbessern.
quelle
Andere als Vordergrund- / Hintergrundbegriff. Eine andere Möglichkeit, das laufende Fenster auszublenden, ist vbscript, sofern es in Ihrem System noch verfügbar ist.
Nennen Sie es sth.vbs und rufen Sie es von bat aus auf, geben Sie eine geplante Aufgabe ein usw. Persönlich werde ich vbs ohne Eile auf jedem Windows-System deaktivieren, das ich verwalte :)
quelle
Erstellen Sie eine neue C # Windows-Anwendung und rufen Sie diese Methode über main auf:
quelle
Dies funktioniert bei meiner Windows XP Home-Installation auf Unix-Weise:
quelle
Eigentlich ist das mit dieser Option am Ende ganz einfach:
quelle
start
hat keine-WindowStyle
Option.C:` instead of
C: \ Windows`) deutet darauf hin, dass er irgendwo im Internet ein Tool gefunden und auf seine Festplatte kopiert hat.