Eine .bat-Datei, "Call" oder nicht "Call", das ist die
Wenn von innen eine bat-Datei, die Sie aufgerufen haben, eine andere batch-Datei hätte aber noch ein paar restlichen Vorgänge abgeschlossen, wie kann man sicherstellen, dass der Aufruf zum ersten bat-Datei wird nach der Fertigstellung oder Fehler, wird wieder die Datei, heißt es in der ersten Instanz?
Beispiel:
CD:\MyFolder\MyFiles
Mybatfile.bat
Copy afile toHere
oder
CD:\MyFolder\MyFiles
CALL Mybatfile.bat
COPY afile toHere
Was ist der Unterschied zwischen der Verwendung CALL
oder START
oder keiner von Ihnen überhaupt? Würde das irgendwelche Auswirkungen auf Sie, ob Sie zurückkehren würde, für die Ergebnisse der copy-Befehl oder nicht?
InformationsquelleAutor der Frage AltF4_ | 2013-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie schon andere gesagt haben,
CALL
ist der normale Weg, um ein bat-Datei innerhalb einer .bat und an den Aufrufer zurückgeben.Jedoch alle batch-Datei-Verarbeitung einzustellen (Kontrolle nicht an den Aufrufer zurückgeben) wenn die aufgerufene batch-Datei hat eine schwerwiegende syntax-Fehler, oder, wenn das aufgerufene Skript beendet mit EXIT-ohne /B-option.
Können Sie garantieren, Kontrolle an den Aufrufer zurückgeben (solange bleibt das Konsolenfenster geöffnet, natürlich), wenn Sie ausführen, das 2. script über die CMD-Befehl.
Aber dies hat eine Einschränkung, dass die Umwelt-Variablen, die von der aufgerufenen batch wird nicht beibehalten, nach der Rückkehr.
Ich bin mir nicht bewusst, eine gute Lösung zu garantieren, Rückgabe in allen Fällen und zu bewahren Umgebung ändert.
Wenn Sie wirklich brauchen, zu bewahren Variablen, während mit CMD, dann können Sie das "" Skript-schreiben der variable ändert, um eine temp-Datei, und dann haben die Anrufer Lesen der temp-Datei und re-stellen Sie die Variablen.
InformationsquelleAutor der Antwort dbenham
call
notwendig ist .bat-oder .cmd-Dateien, da sonst die Kontrolle nicht an den Aufrufer zurückgegeben.Für exe-Dateien ist es nicht erforderlich.
Start
ist nicht das gleiche wiecall
erstellt es eine neue cmd.exe Instanz, so kann es laufen ein genannt batch-Datei asynchronoslyInformationsquelleAutor der Antwort jeb
Den `CALL' - Anweisung wurde eingeführt, MS-DOS 3.3
Ist es den Aufruf von batch-Dateien in einer batch-Datei, ohne Abbruch der Ausführung der aufrufenden batch-Datei, und verwenden Sie die gleiche Umgebung für beide batch-Dateien.
Also in deinem Fall die Lösung ist die Verwendung
CALL
InformationsquelleAutor der Antwort Saju