Bagaimana cara memanggil skrip batch lain dari dalam skrip batch?
Saya ingin itu dieksekusi dalam sebuah if
pernyataan.
Jawaban:
Gunakan CALL
seperti dalam
CALL nameOfOtherFile.bat
Ini akan memblokir (menghentikan sementara) eksekusi dari file batch saat ini, dan itu akan menunggu sampai CALL
ed selesai.
Jika Anda tidak ingin memblokir, gunakan START
saja.
Dapatkan detailnya dengan menggunakan CALL /?
atau START /?
dari prompt cmd.
Anda bisa menjalankan skrip batch dengan nama, seolah-olah Anda menjalankan pada baris perintah.
Jadi, misalkan Anda memiliki file bar.bat
yang mengatakan echo This is bar.bat!
dan ingin memanggilnya dari file foo.bat
, Anda dapat menulis ini di foo.bat
:
if "%1"=="blah" bar
Jalankan foo blah
dari baris perintah, dan Anda akan melihat:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Namun berhati-hatilah : Saat Anda menjalankan skrip batch dari skrip batch lain, skrip batch asli akan berhenti berjalan. Jika Anda ingin menjalankan skrip batch sekunder dan kemudian kembali ke skrip batch sebelumnya, Anda harus menggunakan call
perintah. Sebagai contoh:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Jika Anda menjalankannya foo blah
, Anda akan melihat:
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!
Anda harus menggunakan CALL
CALL batch.bat
Jika Anda ingin membuka file batch di jendela lain, gunakan start
. Dengan cara ini, pada dasarnya Anda dapat menjalankan dua skrip pada saat yang bersamaan. Dengan kata lain, Anda tidak perlu menunggu skrip yang baru saja Anda panggil selesai. Semua contoh di bawah berfungsi:
start batch.bat
start call batch.bat
start cmd /c batch.bat
Jika Anda ingin menunggu skrip selesai, coba start /w call batch.bat
, tetapi batch.bat harus diakhiri dengan 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, saya tidak tahu mengapa, tetapi panggilan tidak berhasil, triknya
call script.bat
tidak kembali ke konsol asli.
cmd /k script.bat
kembali ke konsol aslinya.
call
, ia akan melanjutkan eksekusinya bahkan dengan kesalahan dalam skrip yang disebut.