Bagaimana cara mengekstrak banyak arsip di dalam subdirektori dalam folder, mengeluarkan hasilnya kembali ke folder di mana arsip berada.
Bagaimana cara mengekstrak banyak arsip di dalam subdirektori dalam folder, mengeluarkan hasilnya kembali ke folder di mana arsip berada.
Jawaban:
Pertama, instal 7-zip .
Buat bat
file di root direktori yang berisi banyak subdirektori dengan arsip di dalamnya. Kemudian rekatkan yang berikut ini di:
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x "%%X"
)
popd
)
Luncurkan kelelawar, dan semua rar / ritsleting akan diekstraksi ke dalam folder tempat mereka berada.
Bagaimana cara kerjanya?
UNTUK / D / r %% F dalam ("*") DO (
Untuk loop ke loop melalui semua folder di direktori saat ini, dan letakkan path ke dalam variabel
%%F
.
pushd% CD%
Masukkan direktori saat ini bahwa kita berada dalam memori.
cd %% F
Atur folder dari variabel
%%F
sebagai direktori saat ini.
FOR %%X in (*.rar *.zip) DO (
Untuk semua file
rar
danzip
di folder saat ini, lakukan:
"C:\Program Files\7-zip\7z.exe" x "%%X"
Jalankan 7-zip pada file. Harga diperlukan sekitar
%%X
karena beberapa nama file memiliki spasi di dalamnya.
popd
Kembali ke direktori sebelumnya yang sebelumnya kita simpan di memori.
Semoga ini bermanfaat bagi seseorang.
Saya punya masalah menjalankan skrip dari Windows Vista. Ketika saya menjalankan kode, tidak ada yang terjadi. Saya harus menjadi administrator untuk dapat menjalankan skrip. Ketika saya mengklik kanan pada file .bat dan "jalankan sebagai administrator" itu tidak berfungsi karena beberapa alasan dimulai pada folder system32 (jika saya ingat dengan benar). Untuk mengatasi ini cukup gunakan variabel Lingkungan Windows (dijelaskan di sini: Variabel Lingkungan Windows )% ~ dp0 untuk beralih kembali ke direktori tempat skrip dijalankan.
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x %%X
)
popd
)
Pastikan tidak ada file * .rar atau * .zip pada tingkat yang sama dengan skrip. Mereka harus turun satu tingkat.
Saya harap komentar ini membantu seseorang.
find . -name "*.zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;
Mulai pencarian rekursif di direktori saat ini, menemukan semua file yang berakhiran .zip, lalu pipa itu menjadi loop. Untuk setiap file yang ditemukannya, ia menjalankan perintah unzip pada file tersebut dengan output di-shunt ke direktori file.
Namun, jawaban di atas berfungsi jika Anda menjalankan Windows 64-bit
dan 7-Zip 32-bit
, jalur yang benar adalah C:\Program Files (x86)\7-Zip
untuk 7-Zip. Di bawah ini adalah skrip yang berfungsi untuk saya.
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files (x86)\7-zip\7z.exe" x %%X
)
popd
)