2016-06-14 145 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 

你的代码不正确。这是正确的。