是的按说是不应该多一次。但你这代码事实说明,当那括号里是用通配符代表某种"集",而就在这for循环里又嵌套有for循环且产生了新的符合那集里条件的文件名时,就会多了一轮循环。就是说循环的第一轮它并没有把该循环有哪些记住,再读时自然就多出了,老实说,我并不知道for这个命令原程序是怎么编的,只好猜测它第二轮就全记住了,不然恐怕就不只多一次了。也许这解释你不能心服,呵呵我可不愿去深入研究只要能用好它就行了
----- 这类如果会产生新的符合条件的文件或者是其中有隐藏属性的文件不要忽略,则改为 for /f %%i in ('dir/b/a-d') 理论上速度会比直接通配符的会慢那集内多出的命令时间(那集里的命令可理解为另开了个不显示的cmd窗口执行的)
哦你还有个疑问,也不知为何去掉0为何弄这么复杂不就是去前两字符吗?因为001重命名了两次第一次正常运行,第二次主名只一个字符了。。。
对于去前置0可以用 set/a nn=1%%~ni-1000