中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 14:39
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]如何实现文件批量重命名(1.rm --> 001.rm 这样的)
可打印版本  2,197 / 8
第1楼 coolstar14 发表于 2005-02-20 00:00
初级用户 发帖 4 积分 111
[求助]如何实现文件批量重命名(1.rm --> 001.rm 这样的)
从网上下载过一些文件, 命令规则为 1.rm 2.rm ... 11.rm 12.rm ... 100.rm 这样的.

在资源管理器里按文件名排序就不太爽了, dos下有没有方便的方法可以统一的补全三(或指定位数), 即 1.rm --> 001.rm 11.rm --> 011.rm 这样的.

另, 有的情况下, 数字前面还带些前缀, 如 sanguo1.rm 这样的, 应该改成 sanguo001.rm这样.



试了半天的for 一直不行, 求助各位大侠, 请多多指教.

第2楼 chenhui530 发表于 2005-02-20 00:00
高级用户 发帖 273 积分 772
第3楼 chenhui530 发表于 2005-02-20 00:00
高级用户 发帖 273 积分 772
如果你的系统是nt构架的话可以使用FOR语句for /l %%a in (1,1,99) do ren sanguo%%a.txt 0%%a.txt
第4楼 chenhui530 发表于 2005-02-20 00:00
高级用户 发帖 273 积分 772
for /l %%a in (1,1,99) do ren sanguo%%a.rm 0%%a.rm
第5楼 coolstar14 发表于 2005-02-20 00:00
初级用户 发帖 4 积分 111
谢谢楼上.
我是2000系统, 所有你给的答案应该是正解了.

我刚试了一把, 基本应该算成功的. 它确实在每个文件前面都加了个0, 虽然不像我希望的那样( 可以区分出位数, 统一补全对应的位数,像sg1.rm 补为 sg001.rm sg10.rm 则只补1个0为sg010.rm), 但稍麻烦一点把这个命令使用两遍也就是了.

另: 对于其中的语法解释我还不是太明白, 正在找Window的帮助, 如果大侠方便, 能不能稍微解释一下.
第6楼 coolstar14 发表于 2005-02-20 00:00
初级用户 发帖 4 积分 111
受教了.
我知道之前我弄了半天For 为什么不行了, 思路不对的啦.
之前我的思路是局限在从文件名上取变量, 根本没想到可以直接用 1 -99 当变量的说.
我原来 是这样用的 for %a in (sg?.rm) do echo ren %a ...
很明显上面那句是可以列出所有符合要求的文件, 但实际命令中因为无法取到数字部分, 所以只能是失败了.

OK, 再次感谢楼上, 不仅是解决问题, 而且教会我一种新的思路.
第7楼 chenhui530 发表于 2005-02-20 00:00
高级用户 发帖 273 积分 772
没有大家互相学习多实践就能找出答案
第8楼 Climbing 发表于 2005-02-20 00:00
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
用命令怪麻烦的,安装一个拖把更名器,想怎么改就怎么改。
第9楼 bush 发表于 2005-02-21 00:00
银牌会员 发帖 730 积分 2,165
的確受教!nt命令行較之dos真是改變很大呀!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023