bat for循环给文件名添加前缀时,只要含有 [ 字符,就会无限循环
@echo off
Setlocal Enabledelayedexpansion
for %%i in (*.mp4) do (
echo "%%i"
ren "%%i" "[123]""%%i"
)
pause
这段代码执行会一直不断添加前缀[123],经过测试我发现是 [ 字符的问题,请问是什么原因,该如何解决
bat for循环给文件名添加前缀时,只要含有 [ 字符,就会无限循环
@echo off
Setlocal Enabledelayedexpansion
for %%i in (*.mp4) do (
echo "%%i"
ren "%%i" "[123]""%%i"
)
pause
这段代码执行会一直不断添加前缀[123],经过测试我发现是 [ 字符的问题,请问是什么原因,该如何解决
给重命名的文件换个文件夹,不要在本文件夹内操作
如果是高级语言,肯定是先把要操作的文件名放在一个list里,然后遍历list操作
而在bat里,你直接遍历文件夹,没有先缓存文件,导致一边遍历,文件夹里的文件一直在变,永远遍历不完
其实跟[字符无关,是因为[字符加在最前之后,导致排序发生变化,你修改后的文件名永远排在最后,导致永远有新的文件需要处理
如果你把[删掉,那么文件前面加个1,它排序变得靠前,那么遍历的时候不会遍历到它,就能正常结束