Batch perintah "Ekstrak Di Sini"

2

Saya ingin mengelompokkan perintah "Ekstrak Di Sini ..." pada folder yang lengkap. Setiap jenis arsip harus di-unzip ke folder saat ini dengan nama file arsip. Saya telah menemukan beberapa skrip BATCH hanya untuk * .zip, tetapi saya tidak peduli jenis arsipnya, asalkan pengarsipan saya dapat membukanya.

Adakah yang tahu jenis arsip seperti apa yang memiliki fungsi batching? Saya tidak dapat menemukannya di 7-zip atau winrar.

Dalam pseudo:

Given folder x
foreach archiveFile in x or descendant of x
unzip archiveFile.extension >> "folder of archiveFile/archiveFile"

Pembaruan
Saya telah mencoba yang berikut ini hanya untuk file zip:

dir /s /b *.zip > allzips.txt
for /F %%x in (allzips.txt) do unzip %%x

Di mana unzipmasih fungsi yang tidak diketahui.

Marnix
sumber
Bisakah Anda menempelkan kode Anda untuk .zip di sini dan saya akan menyesuaikannya.
William Hilsum
@ William Ini dia.
Marnix

Jawaban:

5

Diberikan EDIT : Menggunakan skrip batch.

Anda mungkin ingin menggunakan alat zip pihak ketiga (sangat merekomendasikan versi baris perintah 7-ZIP yang disebut 7z.exe) untuk melakukannya.

dengan 7z, sintaksnya adalah sebagai berikut:

7z <command> [<switch>...] <base_archive_name> [<arguments>...]

Untuk mengekstrak perintahnya adalah:

7z e file.zip -y

the -y switch menganggap jawaban "Ya" untuk setiap pertanyaan yang mungkin muncul selama ekstraksi seperti menimpa permintaan.

Jadi perintah Anda akan dibaca

CD "C:\Location\Of\ZipFiles"
FOR /F "USEBACKQ tokens=*" %%F IN (`DIR /b *.zip`) DO (7z e "%%F" -y)

Jika Anda ingin meng-output-nya ke lokasi yang berbeda, Anda bisa menggunakan -o dan tentukan direktori:

7z e "%%F" -y -oC:\Some\Other\Folder\

EDIT:

Untuk melakukan ekstrak dengan path lengkap dan menentukan semua arsip ZIP saja, gunakan ini:

7z x -tzip "C:\Location\of\zips\*"

Atau bahkan nutzier ... semua file ZIP di drive C:

7z x -r -tzip "C:\*"

EDIT2:

Membuatnya kompatibel dengan file output Anda, ini:

dir /s /b *.zip > allzips.txt
for /F %%x in (allzips.txt) do (7z x -tzip "%%x")
Mechaflash
sumber
Saya ingin mempertahankan folder dan menampilkannya di lokasi itu sendiri. Bukankah seharusnya saya menggunakan xbukan e? Dan: Ini masih untuk file zip saja. Apakah tidak ada cara untuk hanya mengatakan: semua arsip-jenis-file?
Marnix
Jadi, Anda ingin menarik SEMUA ZIP FILES dari mana saja pada drive dan menyuruh mereka untuk mengekstrak di mana mereka duduk ke folder bernama sama dengan file zip? Dan tidak dalam 7z opsi ekstrak adalah 'e'
Mechaflash
Anda dapat menggunakan 'x' bukannya 'e' untuk mempertahankan path lengkap ya. Kesalahanku.
Mechaflash