使用7zip命令行批量将指定目录文件单独压缩为同名Zip文件
解决指定文件夹内单个文件批量压缩为同名Zip的问题
我来帮你搞定这个批量压缩的小问题~你之前的命令之所以会把目录也打包,是因为FOR %i IN (D:\Home\files)匹配的是目录本身,而不是目录里的所有文件,所以才会生成错误的压缩包。
下面是两种场景下的正确实现方案:
直接在CMD窗口执行的命令
FOR /F "delims=" %i IN ('dir /b /a-d "D:\Home\files"') DO 7z.exe a "D:\Home\files\%~ni.zip" "D:\Home\files\%i"
命令细节解释:
/F:让FOR循环处理dir命令输出的结果,而非直接匹配路径"delims=":确保文件名包含空格或特殊字符时不会被拆分dir /b /a-d "D:\Home\files":/b只输出纯文件名,/a-d会排除所有子目录,只列出目标文件夹里的文件%~ni:提取文件的主文件名(不含扩展名),用来生成同名的Zip包- 最后指定完整路径的源文件,避免因当前目录不同导致的文件找不到问题
写入批处理(.bat)文件的版本
如果需要重复使用,可以把命令写成批处理文件,注意变量要使用双百分号:
@echo off set "targetDir=D:\Home\files" FOR /F "delims=" %%i IN ('dir /b /a-d "%targetDir%"') DO "C:\Program Files\7-Zip\7z.exe" a "%targetDir%\%%~ni.zip" "%targetDir%\%%i"
额外说明:
@echo off:关闭命令回显,让执行过程更干净set "targetDir=...":把目标文件夹路径定义成变量,后续修改更方便- 如果你的7-Zip没有添加到系统PATH中,需要写出
7z.exe的完整路径,比如上面的"C:\Program Files\7-Zip\7z.exe"
内容的提问来源于stack exchange,提问作者John Salzman
相关产品推荐
相关产品推荐

