找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35639|回复: 7

[文本处理] [已解决]如何批量修改同一个folder下面的file name?

[复制链接]
发表于 2008-10-29 13:47:17 | 显示全部楼层 |阅读模式
本帖最后由 CrLf 于 2012-1-11 14:40 编辑

如题:

同一个folder下面的file有多个名称散乱的,我想通过bat将他改成按序号排列,比如A001,A002之类的顺序。

请教如何写批处理?谢谢朋友们!

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2008-10-29 14:07:24 | 显示全部楼层
本帖最后由 CrLf 于 2012-1-11 14:40 编辑

刚才搜索了一下,发现风版的这个代码比较适合:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir/b *.txt') do (
  3.    set /a n+=1
  4.    if not exist "!n!.txt" (ren "%%a" "!n!.txt") else call :loop "%%a"
  5. )
  6. pause&exit
  7. :loop
  8.   set /a n+=1
  9.   if exist "!n!.txt" goto loop
  10.   ren "%~1" "!n!.txt"
  11. goto :eof
复制代码
唯一的缺憾是能在前面加一个识别码就好了,比如A1,A2这种。
发表于 2008-10-29 14:09:59 | 显示全部楼层
是这个意思么?
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir/b *.txt') do (
  3.    set /a n+=1
  4.    if not exist "!n!.txt" (ren "%%a" "A!n!.txt") else call :loop "%%a"
  5. )
  6. pause&exit
  7. :loop
  8.   set /a n+=1
  9.   if exist "!n!.txt" goto loop
  10.   ren "%~1" "A!n!.txt"
  11. goto :eof
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

发表于 2008-10-29 14:13:24 | 显示全部楼层
唯一的缺憾是能在前面加一个识别码就好了,比如A1,A2这种。

那就自己加上去嘛...
在每个!n!前面都加上A就好了,比如"A!n!.txt"
 楼主| 发表于 2008-10-29 14:17:46 | 显示全部楼层
原帖由 Batcher 于 2008-10-29 14:09 发表
是这个意思么?@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir/b *.txt') do (
   set /a n+=1
   if not exist "!n!.txt" (ren "%%a" "A!n!.txt") else call :loop "%%a"
)
pause& ...


感谢版主这么快的回复!(热泪满面中~~~)

经过测试,这个代码合适我的需要,严重 感谢!

希望本论坛越办越好!
 楼主| 发表于 2008-10-29 14:21:29 | 显示全部楼层
原帖由 more 于 2008-10-29 14:13 发表

那就自己加上去嘛...
在每个!n!前面都加上A就好了,比如"A!n!.txt"


本人菜鸟一只,不知道在哪里加

开始我在所有n!的前面加了A,结果出错

是对这个语法不了解

版主们能不能稍微讲解一下,以便加深对这个的理解!

再次感谢!
发表于 2008-10-29 14:41:04 | 显示全部楼层
稍稍改一下巡查大人的代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "n=1000"
  3. for /f "delims=" %%a in ('dir/b *.txt') do (
  4.    set /a "n+=1"
  5.    if not exist "A!n:~-3!.txt" (ren "%%a" "A!n:~-3!.txt") else call :loop "%%a"
  6. )
  7. pause&exit
  8. :loop
  9.   set /a "n+=1"
  10.   if exist "A!n:~-3!.txt" goto :loop
  11.   ren "%~1" "A!n:~-3!.txt"
  12. goto :eof
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

发表于 2008-10-29 15:32:45 | 显示全部楼层

回复 6楼 的帖子

多到“批处理教学&资料”版块看教程
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 19:33 , Processed in 0.019460 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表