Script asli Anda melakukan hal berikut, baris demi baris:
@echo on
Memberitahu prompt perintah untuk mencetak kembali setiap perintah dalam file batch sebelum menjalankannya. Ini hanya agar Anda dapat "melihat" apa yang sebenarnya dilakukan sebelum melakukannya.
cd "C:\Users\MVD21\Desktop\test"
C menggantung D irectory ke apa yang saya harap adalah jalan di mana Anda ingin zip semua file.
FOR %%i IN (C:\Users\MVD21\Desktop\test) DO 7z.exe a "%~ni.7z" "%i"
Parameter di IN
sini adalah (C:\Users\MVD21\Desktop\test)
. Ini akan menyebabkan loop "tubuh" (tindakan di belakang kata kunci DO
) dieksekusi tepat sekali , dengan %i
parameter yang menetapkan nilainya C:\Users\MVD21\Desktop\test
. Tidak mengherankan jika ini tidak sesuai keinginan Anda! Sepertinya ini akan zip seluruh direktori menjadi file .7z tunggal.
Jika tidak melakukan apa - apa , itu mungkin karena tidak dapat menemukan jalan 7z.exe
. Jika file itu tidak ada di direktori saat ini ( test
direktori yang disebutkan di atas), maka itu harus berada di PATH
(dalam %PATH%
variabel lingkungan; coba echo %PATH%
di shell untuk melihat apa yang diatur untuk saat ini). Kalau tidak, Anda harus menyalin 7z.exe
ke direktori saat ini atau menentukan jalur absolut ke tempat ia berada (seperti, misalnya, "C:\Program Files\7-zip\7z.exe" ...
).
pause
Ketika skrip selesai, kata kunci ini hanya memberi tahu shell untuk menunggu Anda menekan enter atau menutup prompt perintah alih-alih keluar dengan segera.
Saat Anda sedang membuat skrip batch (atau, memang, hal lain yang berhubungan dengan kode), Anda harus berhenti memperlakukan seluruh skrip sebagai copy-paste monolitik yang tidak Anda (usahakan untuk) pahami, dan alih-alih hancurkan Anda masalah menjadi sub-bagian yang dapat Anda pahami secara terpisah, lalu hubungkan bersama. Ini akan memungkinkan Anda untuk memecahkan masalah secara mandiri dan membuat solusi alih-alih meminta orang lain untuk melakukan semua pekerjaan Anda untuk Anda. Saya sangat merekomendasikannya.
Dalam kasus Anda, Anda memiliki sub-komponen masalah berikut ini:
- Iterate over (loop through) setiap file yang terkandung dalam direktori yang diberikan.
- Untuk setiap file yang diberikan, masukkan ke file .7z dengan menjalankan
7z
utilitas.
Peluang seseorang untuk memiliki jawaban di luar sana yang telah memecahkan kebutuhan spesifik Anda kurang dari peluang untuk dapat menemukan bagian yang lebih umum secara individual.
Pertanyaan ini, 'Bagaimana melakukan sesuatu untuk setiap file dalam direktori dalam skrip batch' memecahkan setengah masalah Anda.
Inti dari jawabannya adalah Anda baru mulai dengan bagian ini dari jawaban StackOverflow:
for /f "usebackq delims=|" %%f in ('dir /b "c:\program files"') do echo %%f
dan mengubah bagian mana itu melakukan sesuatu (yang echo %%f
) untuk melakukan apa yang ingin Anda lakukan . Saya tahu bahwa Anda perlu mengubah bagian itu, karena saya telah menganalisis teks skrip dan memahami arti setiap karakter dan parameter, sehingga saya dapat mempertimbangkan di mana saya ingin memasukkan kode saya sendiri.
Inilah beberapa "kode udara" (belum diuji!):
for /f "usebackq delims=|" %%f in ('dir /b "C:\Users\MVD21\Desktop\test"') do 7z.exe a "%~ni.7z" "%i"
The @echo on
dan pause
pernyataan di atas adalah praktek yang baik, sehingga Anda dapat meninggalkan mereka di. Dan Anda mungkin ingin menjaga cd
pernyataan juga, jika file Anda berada di jalan itu.
Jadi apa yang meninggalkan kita?
@echo on
cd "C:\Users\MVD21\Desktop\test"
for /f "usebackq delims=|" %%f in ('dir /b "C:\Users\MVD21\Desktop\test"') do 7z.exe a "%~nf.7z" "%f"
pause
Jika Anda membalas dengan "Tidak berhasil!", SAYA TIDAK AKAN membantu Anda. Jika Anda mencoba ini dan itu tidak berhasil, Anda HARUS memberi tahu saya di komentar informasi berikut:
- Apa pesan kesalahan yang tepat yang Anda dapatkan di prompt perintah ketika Anda menjalankan perintah ini atau memasukkannya ke dalam file batch dan menjalankannya? Jangan menyingkat; salin dan tempel output secara langsung (letakkan di http://pastebin.com jika banyak).
- Menurut Anda, apa pesan kesalahan yang memberi tahu Anda bahwa masalahnya adalah?
- Di mana instalasi 7-zip Anda berada (path file)?
- Apakah lokasi file instalasi 7-zip Anda termasuk dalam isi
PATH
variabel lingkungan? (memeriksa ini, seperti disebutkan di atas, dengan echo %PATH%
dalam cmd
prompt.)