Board logo

标题: [文件操作] 循环批量给txt文件重命名的BAT代码错误弄不懂,大佬帮看看 [打印本页]

作者: fdxmzy    时间: 2022-4-18 12:15     标题: 循环批量给txt文件重命名的BAT代码错误弄不懂,大佬帮看看

for %%i in (*.txt) do ren “%%i” 文档"%%i"这段代码是批量给txt文件重命名但是为什么第一个文件加了两个前缀
作者: qixiaobin0715    时间: 2022-4-18 12:21

  1. for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%i" 文档"%%i"
复制代码

作者: qixiaobin0715    时间: 2022-4-18 12:24

回复 1# fdxmzy
重命名文件时,最好不要直接使用for。可使用for+dir形式,就不会有问题。
作者: fdxmzy    时间: 2022-4-18 12:25

回复 2# qixiaobin0715
我知道这段代码才是正确的,我只是想弄懂为啥上面的代码重命名第一个文件被执行了两次,而如果只是显示文件名的话他就只执行一次,背后原理是什么呢,我没搞懂。谢谢大佬解惑一下
作者: fdxmzy    时间: 2022-4-18 12:30

回复 3# qixiaobin0715
D:\123>11.bat

D:\123>for %i in (*.txt) do echo %i

D:\123>echo 文档22.txt
文档22.txt

D:\123>echo 文档文档11.txt
文档文档11.txt

D:\123>
您看看嘛改成echo它就执行了一次就完了 怎么重命名就执行了2次呢?
作者: qixiaobin0715    时间: 2022-4-18 12:31

本帖最后由 qixiaobin0715 于 2022-4-18 12:34 编辑

可能是批处理预处理机制的问题,总之这样处理有bug。
前者是边列举文件边进行处理,有可能改名后会再次读入;后者是将文件读入内存后一并处理,就不会有重复现象。
作者: qixiaobin0715    时间: 2022-4-18 12:38

回复 5# fdxmzy
没必要搞的那么深,知道如何正确使用即可。
作者: fdxmzy    时间: 2022-4-18 12:43

回复 6# qixiaobin0715


    谢谢应该是这样,这段代码是我在网上抄来重命名的百度排名前面的都是这段代码,代码很老了应该在win8之前可以运行,反正我的win11上就会重复命名两次。
作者: qixiaobin0715    时间: 2022-4-18 12:55

你可以找个win xp系统的电脑试试,应当也不行。
作者: Batcher    时间: 2022-4-18 21:47

回复 4# fdxmzy


参考for命令教程第8页:
http://bbs.bathome.net/thread-31727-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2