[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

for %%i in (*.txt) do ren “%%i” 文档"%%i"这段代码是批量给txt文件重命名但是为什么第一个文件加了两个前缀

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

TOP

回复 1# fdxmzy
重命名文件时,最好不要直接使用for。可使用for+dir形式,就不会有问题。

TOP

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

TOP

回复 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次呢?

TOP

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

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

TOP

回复 5# fdxmzy
没必要搞的那么深,知道如何正确使用即可。

TOP

回复 6# qixiaobin0715


    谢谢应该是这样,这段代码是我在网上抄来重命名的百度排名前面的都是这段代码,代码很老了应该在win8之前可以运行,反正我的win11上就会重复命名两次。

TOP

你可以找个win xp系统的电脑试试,应当也不行。

TOP

回复 4# fdxmzy


参考for命令教程第8页:
http://bbs.bathome.net/thread-31727-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表