我正在使用批处理文件追加多个文件名。
对于文件:1.txt,2.txt,3.txt,4.txt,5.txt - 我想附加copy_1.txt
set "nname=copy_"
for %%A in (*.txt) do (
ren %%A %nname%%%A
)
exit
但是,循环似乎循环回到第一个文件并重新附加文件名。
这是cmd输出:
> for %A in (*.txt) do (ren %A copy_%A )
> (ren 1.txt copy_1.txt )
> (ren 2.txt copy_2.txt )
> (ren 3.txt copy_3.txt )
> (ren 4.txt copy_4.txt )
> (ren 5.txt copy_5.txt )
> (ren copy_1.txt copy_copy_1.txt )
有人可以向我解释为什么会发生这种情况吗?如何才能解决这个问题?
我尝试添加“异常处理程序”,但没有用。
set "nname=copy_"
for %%A in (*.txt) do (
if exist %nname%%%A goto :exit
ren %%A %nname%%%A
)
:exit
echo file exists
提前致谢!
答案 0 :(得分:1)
在开始处理重命名命令之前,shell没有完成其文件列表,因此第一个重命名命令的结果,即copy_1.txt,与* .txt匹配。
避免它的一种方法:
for /F "usebackq" %%A in (`dir /b *.txt`) do (ren %%A %nname%%A)