Apakah mungkin dalam file batch Windows untuk memanggil lebih dari satu perintah dalam satu FOR
loop? Katakanlah misalnya saya ingin mencetak nama file dan setelah menghapusnya:
@ECHO OFF
FOR /r %%X IN (*.txt) DO (ECHO %%X DEL %%X)
REM the line above is invalid syntax.
Saya tahu dalam kasus ini saya bisa menyelesaikannya dengan melakukan dua loop FOR yang berbeda: satu untuk menampilkan nama dan satu untuk menghapus file, tetapi apakah mungkin melakukannya hanya dalam satu loop?
windows
batch-file
cmd
Marco Demaio
sumber
sumber
for %i in (1 2 3) do echo %i & echo foo
mencetak apa yang saya harapkan: "1", "foo", "2", "foo", "3", "foo" (pada baris terpisah).&&
bukan&
?&&
akan gagal jika perintah pertama gagal,&
akan tetap menjalankan perintah kedua.DO
-parens. Anda dapat menghindarinya dengan menambahkan a^
pada mereka.Penggunaan
&
boleh saja untuk perintah pendek, tetapi baris tunggal itu bisa menjadi sangat panjang dengan sangat cepat. Jika itu terjadi, alihkan ke sintaks multi-baris.Penempatan
(
dan)
masalah. Tanda kurung bulat setelahnyaDO
harus ditempatkan pada baris yang sama, jika tidak, file batch akan salah.Lihat
if /?|find /V ""
untuk detailnya.sumber
DO
TIDAK boleh ditempatkan baris berikutnya jika tidak maka rem file batch. Dalam kode ketika saya menulis for loop saya biasanya menempatkan{
baris berikutnya kurung kurawal .SilverSkin dan Anders keduanya benar. Anda dapat menggunakan tanda kurung untuk menjalankan beberapa perintah. Namun, Anda harus memastikan bahwa perintah itu sendiri (dan parameternya) tidak mengandung tanda kurung.
cmd
dengan rakus menelusuri kurung tutup pertama, alih-alih menangani kumpulan tanda kurung bertingkat dengan baik. Hal ini dapat menyebabkan sisa baris perintah gagal untuk diurai, atau mungkin menyebabkan beberapa tanda kurung diteruskan ke perintah (misalnyaDEL myfile.txt)
).Solusi untuk ini adalah dengan membagi badan loop menjadi fungsi terpisah. Perhatikan bahwa Anda mungkin perlu melompat-lompat di sekitar badan fungsi untuk menghindari "jatuh" ke dalamnya.
sumber
C:\Program Files (x86)
.