2016-06-14 100 views
-2
for /r %%I IN (' *.zip ') DO (
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpnI" "%%I" 
) 
pause 

嗨,我得到這個批處理命令在線解壓文件遞歸。 我想了解For循環在這種情況下的作用。請解釋此批處理文件命令來解壓文件

我在問這個問題,因爲我在運行bat文件時收到錯誤,因爲命令還會從* .zip中選取其他擴展名的文件夾和文件,並引發以下錯誤。

D:\Unzip_folders\New folder>("C:\Program Files\7-Zip\7z.exe" x -o"D:\Unzip_folders\New folder\23Nov2015\error_log.17112015\'" "D:\Unzip_folders\New folder\23Nov2015\error_log.17112015\'") 

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 

Scanning the drive for archives: 

ERROR: The system cannot find the file specified. 
D:\Unzip_folders\New folder\23Nov2015\error_log.17112015\' 
+0

打開一個命令提示符窗口,運行'for /?'並讀取這個命令的輸出幫助以解釋'%〜dpnI'(驅動器號,路徑和名稱沒有找到文件的擴展名)和'%I' 7-Zip有一個幫助解釋命令'x'(摘錄)和開關'-o'。 – Mofi

回答

0

如果分析錯誤消息,你在每個文件名的最後注意到一個'。那是因爲你使用了錯誤的引號。

完全跳過他們:

for /r %%I IN (*.zip) DO (

或使用雙引號:

for /r %%I IN ("*.zip") DO (
+0

感謝您的回覆。請繼續尋找幫助,我的代碼可以正常工作。 – user4308101

0
for /r %%I IN (*.zip) DO (
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpnI" "%%I" 
) 
pause 

你的代碼不正確。這是正確的。