批处理文件复制时生成重复副本(x_x_1.jpg)的问题解决
解决批处理脚本额外生成x_x_1.jpg的问题
问题根源
你的脚本错误使用了未定义的%dir%变量,导致文件匹配逻辑异常。如果%dir%被意外赋值(比如之前操作设置了dir=Converted\),循环会同时处理原始文件和刚生成的Converted目录下的文件,最终生成重复的x_x_1.jpg。
修复后的代码
直接移除多余的set list变量,在for循环中使用明确的通配符匹配当前目录的JPG文件:
@echo off mkdir Converted 2>nul for %%f in (*.jpg) do ( echo Copying "%%f" copy "%%f" "Converted\x_%%~nf.jpg" )
mkdir Converted 2>nul:添加2>nul可屏蔽文件夹已存在时的报错信息,让脚本运行更流畅。*.jpg仅匹配当前目录下的JPG文件,不会包含Converted子目录中的文件,从根源避免重复处理。
可选:指定目标目录的写法
如果需要明确指定文件所在目录(比如脚本不在目标文件目录),可以用%cd%(当前工作目录)或%~dp0(脚本所在目录),注意加上反斜杠避免路径拼接错误:
@echo off set "source_dir=%cd%" mkdir Converted 2>nul for %%f in ("%source_dir%\*.jpg") do ( echo Copying "%%f" copy "%%f" "Converted\x_%%~nf.jpg" )
内容的提问来源于stack exchange,提问作者Max Peglar-Willis
相关产品推荐
相关产品推荐

