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

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

本帖最后由 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
......
谢谢!
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

用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配合工作最合适了。

TOP

  1. @echo off
  2. for /f "tokens=1-2" %%a in (C:\test\list.txt) do (
  3.     ren "D:\test\%%a" "%%b_%%a"
  4. )
复制代码
1

评分人数

    • CrLf: 乐于助人PB + 5

TOP

遇到高手了,学习学习

TOP

高手们今天都休假去了?

TOP

本帖最后由 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
复制代码

TOP

回复 5# liht1024


3楼的代码不行吗?

TOP

出问题了,如果目录内有文件夹,代码也会把符合条件的文件夹改名了,还不知如何解决?

TOP

回复 3# awk


    这个代码只能适用于文件名只含那些字符的文件,如果文件名还有其它字符则不行。

TOP

回复 6# 545810831


    如果同时存在111_1、111_2这样的文件,就不能改名了。

TOP

回复 9# liht1024


    那是楼主没有事先说明背景环境,所以别人才无法给你量体裁衣。
    建议在顶楼更新一个文件列表作为参照,隐私部分可用其他字符替代,格式不变即可

TOP

回复 10# liht1024


在这种情况下,你希望改成什么样子?

TOP

改了一下代码,应该可以了吧
  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

评分人数

TOP

回复 13# 545810831


    谢谢,问题已经解决,就是这样的。

TOP

返回列表