使用CMD命令行和7zip解压文件夹中的所有文件

3
我使用以下代码从文件夹中提取所有JAR文件,目标位置可以与原位相同:

我使用这些代码行在文件夹中提取所有JAR文件,目标位置可以与原始位置相同:

<b>set SEVENZIP_EXE=C:\Program Files\7-Zip\<br>
set INPUT_FOLDER=D:\jar

for /f "tokens=1-2 delims=. " %%a in ('dir *.jar /a-d/b') do "%SEVENZIP_EXE%" x -aoa -o"%INPUT_FOLDER%" %%a.%%b

但是我收到的全部是:在此时,%%a是意外的。 !! 有什么建议吗? 谢谢
1个回答

3

您正在命令提示符中运行它,而不是在批处理文件中运行。如果您在提示符上,应该只使用单个百分号%:

set INPUT_FOLDER=D:\jar

for /f "tokens=1-2 delims=. " %a in ('dir *.jar /a-d/b') do "%SEVENZIP_EXE%" x -aoa -o"%INPUT_FOLDER%" %a.%b

我注意到您没有正确设置7-zip可执行文件的路径:
set SEVENZIP_EXE=C:\Program Files\7-Zip\7z.exe

如果不能正常工作,可以尝试将其作为批处理文件运行。
@echo off

set SEVENZIP_EXE=C:\Program Files\7-Zip\7z.exe
set INPUT_FOLDER=D:\jar

for /f "tokens=1-2 delims=. " %%a in ('dir *.jar /a-d/b') do "%SEVENZIP_EXE%" x -aoa -o"%INPUT_FOLDER%" %%a.%%b

嗯,tokens=1-2 是什么意思?使用 /a-d/b 参数,dir 命令每行只返回一个项目,是吧?然后 delims 参数在每个句点处分隔每行,tokens 参数告诉命令行将两个部分都作为 %a%b 返回给 do 指令? - Christian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接