Kịch bản:
for /F %%I IN ('dir /b /s *.zip *.rar') DO (
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I"
)
Giải trình:
for /F %%I IN ('dir /b /s *.zip *.rar') DO (
Điều này thực hiện một vòng lặp cho mỗi tệp được trả về bởi lệnh dir /b /s *.zip *.rar
. Các /s
kể dir
để tái diễn vào các thư mục con và /b
in ở định dạng trần.
Tên tệp được lưu trữ trong %%I
biến để sử dụng sau. Nếu bạn đang gõ cái này tại dấu nhắc, bạn sẽ sử dụng %I
thay thế.
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I"
Điều này thực hiện khai thác. Đối số -o"%%~dpI"
trích xuất tệp vào cùng thư mục nơi lưu trữ lưu trữ. Sự lựa chọn khác:
-o"%%~dpI"
- Trích xuất vào thư mục lưu trữ.
-o"%%~dpnI"
- Tạo một thư mục mới trong hệ thống phân cấp được đặt tên theo kho lưu trữ và trích xuất ở đó (nghĩa là AFolder\archive.zip
trích xuất vào AFolder\archive\
).
-o"%%~nI"
- Tạo một thư mục mới trong thư mục hiện tại được đặt tên theo kho lưu trữ và trích xuất ở đó (nghĩa là AFolder\archive.zip
trích xuất vào .\archive\
).
Bỏ qua -o
đối số - Trích xuất vào thư mục hiện tại.
Thí dụ:
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.zip
│
├───BFolder
│ b.zip
│
└───CFolder
c.zip
C:\Temp>batch.bat > nul
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.zip
│ a.zip.txt
│
├───BFolder
│ b.zip
│ b.zip.txt
│
└───CFolder
c.zip
c.zip.txt