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.

Jim Kieger
sumber
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.

Scott Chamberlain
sumber
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.

ernie
sumber
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.

Mechaflash
sumber