Jadi saya mencoba menggunakan 7zip dalam file batch untuk mengambil file dalam folder dan zip sebagai file individual. Jadi file pertama mendapatkan arsip zip sendiri, dan selanjutnya dan seterusnya. Saya sudah mencari di internet dan mencoba banyak kode yang berbeda. Sejauh ini saya hanya berhasil mengatur zip mereka sebagai file zip tunggal dan itu output ke desktop saya.
Sayangnya saya kehilangan kode yang melakukan itu, dan sekarang saya terjebak dengan ini yang sepertinya tidak melakukan apa-apa.
@echo on
cd "C:\Users\MVD21\Desktop\test"
FOR %%i IN (C:\Users\MVD21\Desktop\test) DO 7z.exe a "%~ni.7z" "%i"
pause
Saya ingin setiap file memiliki arsip zip sendiri, dan untuk arsip zip berbagi nama file, minus ekstensi tentu saja.
Setiap bantuan sangat dihargai.
Jawaban:
Skrip Batch
(Tetapkan jalur folder eksplisit penuh sumber dan tujuan di bagian atas lalu jalankan sesuai kebutuhan. Sumbernya adalah tempat file ada yang ingin Anda zip dan tujuan adalah tempat Anda ingin zip itu.)
Garis komando
Sumber Daya Lebih Lanjut
sumber
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 kunciDO
) dieksekusi tepat sekali , dengan%i
parameter yang menetapkan nilainyaC:\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 diPATH
(dalam%PATH%
variabel lingkungan; cobaecho %PATH%
di shell untuk melihat apa yang diatur untuk saat ini). Kalau tidak, Anda harus menyalin7z.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:
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
danpause
pernyataan di atas adalah praktek yang baik, sehingga Anda dapat meninggalkan mereka di. Dan Anda mungkin ingin menjagacd
pernyataan juga, jika file Anda berada di jalan itu.Jadi apa yang meninggalkan kita?
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:
PATH
variabel lingkungan? (memeriksa ini, seperti disebutkan di atas, denganecho %PATH%
dalamcmd
prompt.)sumber