2016-08-20 4 views
1

Kann jemand bitte erklären, was ist der Unterschied zwischenUnterschied zwischen Aufruf und cmd/c in Windows-Batch-

call someBatchFile.bat ... 

Und

cmd /C someBatchFile.bat ... 

Sie beide als Lösungen für this Problem mir vorgeschlagen wurden, aber ich verstehe nicht, warum sie beide arbeiten, und, was noch wichtiger ist, wenn es irgendwelche signifikanten Unterschiede gibt, die ich beachten muss.

+2

Die zweite Anweisung startet einen neuen Prozess. Alle Änderungen, die someBatchFile.bat an Umgebungsvariablen vornimmt, wirken sich nicht aus und sind für Ihre aktuelle Stapeldatei nicht sichtbar. Könnte gut sein, könnte schlecht sein. –

+1

Siehe [diese Antwort] (http://stackoverflow.com/questions/36095847/why-is-there-no-need-for-call-to-return-for-called-batch-script-which-is-invo/36096956 # 36096956). – Aacini

+0

@Aacini, das war die Antwort, die ich suchte. Da die verknüpfte Frage anders ist, denke ich, dass es von Vorteil wäre, wenn Sie es auch hier beantwortet hätten. Willst du das bitte tun, damit ich es als beantwortet markieren kann? – carlossierra

Antwort

5

Der Unterschied besteht darin, dass call die andere Batch-Datei im selben Kontext des Anrufers Programms ausführen, so dass sie die gleichen Umgebungsvariablen und anderen Status (wie echo ON/OFF oder verzögerte Expansion) teilen, während cmd /C die andere Batch-Datei ausführen In einem vollständig getrennten Kontext ist also jede in der aufgerufenen Batchdatei vorgenommene Änderung nicht, die in der Originaldatei wiedergegeben wird.

Genau wie eine persönliche Note, benutzen ich internes Unterprogramm die Batch-Datei über call und externes Unterprogramm derjenige aufgerufen über cmd /C (und Overlay die Batch-Datei aufgerufen direkt ohne call noch cmd /C aufgerufen zu nennen, Das erbt das Verhalten und Kontext der aufrufenden Batch-Datei).

Verwandte Themen