Bir toplu komut dosyası içinden başka bir toplu komut dosyasını nasıl çağırırım?
Bir if
ifadeyle yürütülmesini istiyorum .
Yanıtlar:
Olduğu CALL
gibi kullanın
CALL nameOfOtherFile.bat
Bu, mevcut toplu iş dosyasının yürütülmesini engeller (duraklatır) ve CALL
düzenlenmiş olanın tamamlanmasını bekler .
Engellemesini istemiyorsanız, START
bunun yerine kullanın.
Cmd komut istemini kullanarak CALL /?
veya kullanarak nitty-cesur ayrıntıları alın START /?
.
Komut satırında çalıştırıyormuşsunuz gibi toplu komut dosyasını ada göre çağırabilirsiniz.
Öyleyse, bar.bat
diyen bir dosyanız olduğunu echo This is bar.bat!
ve onu bir dosyadan çağırmak istediğinizi varsayalım foo.bat
, bunu içine yazabilirsiniz foo.bat
:
if "%1"=="blah" bar
foo blah
Komut satırından çalıştırın ve şunu göreceksiniz:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Ancak dikkatli olun : Başka bir toplu komut dosyasından bir toplu komut dosyası çağırdığınızda, orijinal toplu komut dosyası çalışmayı durdurur. İkincil toplu komut dosyasını çalıştırmak ve ardından önceki toplu komut dosyasına geri dönmek isterseniz, call
komutu kullanmanız gerekir . Örneğin:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Bunun foo blah
üzerinde koşarsan, şunu görürsün:
C:\>foo blah
C:\>if "blah" == "blah" call bar
C:\>echo This is bar.bat!
This is bar.bat!
C:\>echo That's all for foo.bat!
That's all for foo.bat!
CALL kullanmalısınız
CALL batch.bat
Toplu iş dosyasını başka bir pencerede açmak isterseniz, kullanın start
. Bu şekilde, temelde iki komut dosyasını aynı anda çalıştırabilirsiniz. Diğer bir deyişle, aradığınız komut dosyasının bitmesini beklemek zorunda değilsiniz. Aşağıdaki tüm örnekler işe yarar:
start batch.bat
start call batch.bat
start cmd /c batch.bat
Komut dosyasının bitmesini beklemek istiyorsanız, deneyin start /w call batch.bat
, ancak batch.bat ile bitmelidir exit
.
dayStart.bat
start "startOfficialSoftwares" /min cmd /k call startOfficialSoftwares.bat
start "initCodingEnvironment" /min cmd /k call initCodingEnvironment.bat
start "updateProjectSource" /min cmd /k call updateProjectSource.bat
start "runCoffeeMachine" /min cmd /k call runCoffeeMachine.bat
release.bat
call updateDevelVersion.bat
call mergeDevelIntoMaster.bat
call publishProject.bat
huh, nedenini bilmiyorum ama çağrı hile
call script.bat
yapmadı orijinal konsola geri dönmedi.
cmd /k script.bat
orijinal konsola geri döndü.
call
, bir hatayla bile yürütülmesine devam eder. aranan komut dosyasında.