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

[文件操作] [已解决]批处理怎样根据文本内容批量更改文件名?

[复制链接]
发表于 2011-11-17 10:55:37 | 显示全部楼层 |阅读模式
本帖最后由 liht1024 于 2011-11-21 11:17 编辑

问题实质上就是要根据文本内容批量替换文件名的某些字符。
有上百个文件(文件名没有规律),分别含有字符(这些字符的前后可能还有其它字符)如下:
111,111_1,1_222,222_r,i_333_r,333,444,444_f,121,121_f_1,112,r_112_i,233_k,233_h,......,
现在有一个文本文件,分为两列,第一列为现有文件名中含有的字符,第二列为要文件名中要添加的字符,如下:
111          ABC
222          CCC
333          ABA
444          ABC
121          CCC
112          DDD
233          ACD
......
求一批处理,将第二列的字符加到现有文件名字符前面,且用"_"隔开,结果如下:
ABC_111
CCC_222
ABA_333
ABC_444
CCC_121
DDD_112
ACD_233
......
谢谢!

评分

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

查看全部评分

发表于 2011-11-17 12:55:47 | 显示全部楼层
用excel打开该文本文件,上述内容在A、B两列,在C1格内填写公式:="ren "&A1&" "&B1&"_"&A1
朝下一拉公式,就得到:
  1. ren 111 ABC_111
  2. ren 222 CCC_222
  3. ren 333 ABA_333
  4. ren 444 ABC_444
  5. ren 121 CCC_121
  6. ren 112 DDD_112
  7. ren 233 ACD_233
复制代码
然后把C列的内容复制出来粘贴到记事本里,保存为bat文件就可以了。
注:对于这种一次性的工作,用excel配合工作最合适了。
发表于 2011-11-17 13:02:30 | 显示全部楼层
  1. @echo off
  2. for /f "tokens=1-2" %%a in (C:\test\list.txt) do (
  3.     ren "D:\test\%%a" "%%b_%%a"
  4. )
复制代码

评分

参与人数 1PB +5 收起 理由
CrLf + 5 乐于助人

查看全部评分

发表于 2011-11-17 13:30:14 | 显示全部楼层
遇到高手了,学习学习
 楼主| 发表于 2011-11-17 15:20:08 | 显示全部楼层
高手们今天都休假去了?
发表于 2011-11-17 20:11:09 | 显示全部楼层
本帖最后由 545810831 于 2011-11-17 20:21 编辑
  1. @echo off
  2. for /f "tokens=1-2" %%i in (1.txt) do   (
  3. for /f "delims=" %%a in ('dir /b "*%%i*.*"') do  ren "%%a" "%%j_%%i%%~xa"
  4. )
  5. pause
复制代码
发表于 2011-11-17 20:41:18 | 显示全部楼层
回复 5# liht1024


3楼的代码不行吗?
发表于 2011-11-18 06:33:13 | 显示全部楼层
出问题了,如果目录内有文件夹,代码也会把符合条件的文件夹改名了,还不知如何解决?
 楼主| 发表于 2011-11-18 13:02:22 | 显示全部楼层
回复 3# awk


    这个代码只能适用于文件名只含那些字符的文件,如果文件名还有其它字符则不行。
 楼主| 发表于 2011-11-18 13:17:42 | 显示全部楼层
回复 6# 545810831


    如果同时存在111_1、111_2这样的文件,就不能改名了。
发表于 2011-11-18 13:30:59 | 显示全部楼层
回复 9# liht1024


    那是楼主没有事先说明背景环境,所以别人才无法给你量体裁衣。
    建议在顶楼更新一个文件列表作为参照,隐私部分可用其他字符替代,格式不变即可
发表于 2011-11-18 16:29:03 | 显示全部楼层
回复 10# liht1024


在这种情况下,你希望改成什么样子?
发表于 2011-11-20 06:32:58 | 显示全部楼层
改了一下代码,应该可以了吧
  1. @echo off
  2. for /f "tokens=1-2" %%i in (1.txt) do   (
  3. for /f "delims=" %%a in ('dir /a-d /b "*%%i*"') do  ren "%%a" "%%j_%%~nxa"
  4. )
  5. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
liht1024 + 1 助人为乐

查看全部评分

 楼主| 发表于 2011-11-21 11:16:15 | 显示全部楼层
回复 13# 545810831


    谢谢,问题已经解决,就是这样的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 08:23 , Processed in 0.029864 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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