For循环中的意外输出。批量Windows

时间:2015-08-13 19:45:25

标签: batch-file

我试图制作一个小批量来解压缩压缩文件我已经在一个包含大量子文件夹和子子文件夹的非常大的文件夹中进行了编辑。

for /d %a in ("E:\Mis Documentos\Nueva Carpeta\*") do for /d %b in ("%a\*") do if EXIST %b/*.zip for /F "delims=" %c in ("%b\*.zip") do 7za.exe e %c

问题是,当它到达if为真的文件夹时,答案是"系统找不到文件E:\ Mis"。因此,即使我放置了" delims ="它仍然会通过空格打破文件路径。选项。 有谁知道如何解决这个问题?

(ACLARATION:我没有在参数之前包含额外的%,因为我直接在cmd提示符下测试它)

更新 添加了qoutes,现在它可以运行de 7za命令,但是当它运行时,出现的路径是     (folderpath \ * .zip) 而不是文件的特定实例。好像它根本没有迭代文件夹。

1 个答案:

答案 0 :(得分:0)

rem your code
for /d %a in ("E:\Mis Documentos\Nueva Carpeta\*") do for /d %b in ("%a\*") do if EXIST  %b/*.zip  for /F "delims=" %c in ("%b\*.zip") do 7za.exe e  %c
rem changes                                                                             v  ^     v          ^                                       v  v
for /d %a in ("E:\Mis Documentos\Nueva Carpeta\*") do for /d %b in ("%a\*") do if EXIST "%b\*.zip" for              %c in ("%b\*.zip") do 7za.exe e "%c"

主要更改:for /F "delims=" %c in ("%b\*.zip") do ...按字面意思<{1}}文字 (当然,在展开"%b\*.zip"之后)。

使用%b进行调试......
要获得输出而不烦人的命令echo,请添加一些... do ECHO 7za.exe e "%c",如下所示:

@

修改:必读

引用包含空格字符的文件名是必须的(必要性),请参阅下面的示例:

如果存在所有文件夹fora以及b(请注意错误消息):

a b

如果既没有==>if exist a b\*.txt echo yes The system cannot find the path specified. ==>if exist "a b\*.txt" echo yes yes 也没有p也没有q文件夹(没有错误消息):

p q