Apa arti tanda persen (% dan %%) dalam argumen file batch?


11

Saya pikir saya kehilangan sesuatu karena saya tidak dapat menemukan apa artinya ini.

Contoh: untuk / D %% A di (*) lakukan "\ 7za.exe" u -t7z -m9 = LZMA2 "%% A.7z" "%% A"

Baris itu seharusnya menggunakan versi baris perintah 7zip untuk mengkompres folder individual, tapi saya bingung apa arti %% A dalam konteks ini.



1
Bingung baris perintah dan file kumpulan. Mengubah tanda di atas.
— Jim Kieger

Jawaban:


11

Itu for perintah membutuhkan placeholder sehingga Anda bisa meneruskan variabel untuk digunakan nanti dalam kueri, kami mengatakan itu menggunakan placeholder %A, alasan kode yang Anda lihat digunakan %%A karena di dalam file batch (yang saya asumsikan di mana Anda menemukan ini) itu % memiliki makna khusus, jadi Anda harus melakukannya dua kali %% jadi itu akan berubah menjadi satu % untuk diteruskan ke for perintah

Untuk benar-benar memecah apa yang dilakukan perintah, ada dua bagian dari perintah:

 for /D %%A in (*) do .....

Apa yang dikatakan bagian ini adalah untuk setiap folder dalam folder saat ini jalankan perintah berikut untuk mengganti %%A dengan nama folder yang sedang diproses.

..... "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

Apa yang dikatakan bagian ini adalah menjalankan perintah "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A" dan ganti keduanya %%A Dengan catatan saat ini kami sedang memproses.


Hanya untuk nitpick - the / D pada for loop akan membatasi * wildcard ke direktori, bukan "setiap file dalam folder ini dan setiap subfolder" (dengan asumsi Ekstensi Perintah diaktifkan).
— ernie

@ernie Anda benar, saya melihat sakelar / R pada halaman bantuan, saya telah memperbaiki jawaban saya.
— Scott Chamberlain

Terima kasih untuk itu, ini menunjukkan bagaimana noobish ini tampaknya, tetapi itu adalah hal yang cukup kuno yang harus saya gali melalui beberapa manual online untuk.
— Jim Kieger

0

Itu variabel.

Contoh khusus itu menggunakan opsi direktori loop FOR , mengulangi melalui direktori dan menugaskannya ke %% A.

Itu juga bukan contoh baris perintah, tetapi contoh file kumpulan. Dalam file batch, Anda perlu menggunakan %% A, sedangkan pada baris perintah, Anda hanya akan menggunakan% A.


0

Dalam skenario Anda, %% A adalah pengganti untuk apa loop "untuk" berulang (yang / D menunjukkan direktori). Jadi setiap iterasi dari loop, %% A adalah salah satu direktori.

Anda akan melihat %% daripada% dalam kode batch. Anda akan melihat% alih-alih %% digunakan di command prompt Anda.

Jadi ketahuilah bahwa jika Anda menyalin kode file batch ke dalam prompt perintah dan menjalankannya dengan %% yang digunakan, itu akan kesalahan, dan sebaliknya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.