我的文件夹中有大量文件,如果它们的名称有共同的开头(无论扩展名是什么),我想将它们压缩在一起。
以下是 3 个文件的示例:
“战后 (1989)(动态)(第 1 盘,共 2 盘)(cr Replicants).st”
“战后 (1989)(动态)(磁盘 2 of 2)(cr Replicants).st”
“战后(1989)(动态)(cr Replicants).m3u”
我想将它们压缩到一个名为 m3u 文件的 zip 文件中。
我试图有一个for循环来查看每个m3u,停止查看第二个闭括号之后的名称的其余部分,然后将该m3u与任何其他具有相同名称开头部分的文件一起压缩(名称的一部分,直到第二个右括号)。
阅读有关此事的其他主题后,这是我迄今为止的批处理脚本:
For %%i in (*)*)*.m3u) do For /F "tokens=2delims=)" %%B in ("%%i") Do ("C:Program Files\7-Zip\7z.exe" -mx9 a "%%~ni.zip" "%%i" "%%B*.*")
这会生成一个具有正确名称的 zip 文件,并将 .m3u 文件放入其中,但不会放入其他 2 个扩展名为 .st 的文件。
任何人都可以帮我修复我的语法,以便脚本按预期工作吗?
您的原始批处理脚本存在错误,并且它没有按照您的建议运行。也许您在粘贴时犯了一些转录错误!
无论如何,您指定了您需要的内容,所以我可以据此进行工作。
您在构建批处理文件时似乎犯了一些常见错误:
第一部分是测试外循环:
for %%i in (*^(*^)^(*^)^(*^)*.m3u) do (
echo %%i
)
在继续之前,我花了几次时间才获得正确的文件模式
%%i
。
下一阶段是构建内循环:
for %%i in (*^(*^)^(*^)^(*^)*.m3u) do (
for /f "tokens=1-3delims=)" %%B in ("%%i") do (
echo Zip: %%~~ni.zip Files: "%%B)%%C)*%%D).*"
)
)
还需要进行几次尝试才能获得正确的标记和正确的模式。然后我们可以构建 zip 命令:
for %%i in (*^(*^)^(*^)^(*^)*.m3u) do (
for /f "tokens=1-3delims=)" %%B in ("%%i") do (
"C:\Program Files\7-Zip\7z.exe" -mx9 a "%%~ni.zip" "%%B)%%C)*%%D).*"
)
)
这就是你想要的吗?
当我运行它时我得到这个:
C:\ ("C:\Program Files\7-Zip\7z.exe" -mx9 a "Af
ter the war (1989)(Dynamic)(cr Replicants).zip" "After the war (1989)(Dynamic)*(
cr Replicants).*" )
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Scanning
Creating archive After the war (1989)(Dynamic)(cr Replicants).zip
Compressing After the war (1989)(Dynamic)(cr Replicants).m3u
Compressing After the war (1989)(Dynamic)(Disk 1 of 2)(cr Replicants).st
Compressing After the war (1989)(Dynamic)(Disk 2 of 2)(cr Replicants).st
Everything is Ok