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

[文件操作] 批处理如何根据excel表格的内容批量修改文件名

[复制链接]
发表于 2016-1-21 11:17:36 | 显示全部楼层 |阅读模式
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /a-d/b/s/q *.*') do (
  4.     set "var=%%~na"
  5.     set newn=!var:AD1011=AD1011T!
  6.     ren "%%a" "!newn!%%~xa"
  7. )
  8. for /f "delims=" %%a in ('dir /a-d/b/s/q  *.*') do (
  9.     set "var=%%~na"
  10.     set newn=!var:AD1012=AD1012T!
  11.     ren "%%a" "!newn!%%~xa"
  12. )
  13. for /f "delims=" %%a in ('dir /a-d/b/s/q  *.*') do (
  14.     set "var=%%~na"
  15.     set newn=!var:AD1013=AD1013T!
  16.     ren "%%a" "!newn!%%~xa"
  17. )
  18. echo end...
  19. pause
复制代码
已有代码,我需要改的名字有5000个左右,所有包含子目录有17000个文件夹,400W文件,求优化。上面这个代码把5000个左右的文件都填,有这么多的文件夹,扫描就卡死了。
求个方便处理的程序。
这是一部分文件名
 楼主| 发表于 2016-1-6 14:33:00 | 显示全部楼层

批处理如何根据excel表格的内容批量修改文件名?6楼有新的总结

改名前文件名:
AD1011奥迪车.DSN
AD1011-G1101-AA.DSN
AD1011-G1101-AA-118-主副背料-四向-749.dxf
AD1011-G1101-AA-118-主副背料-四向-(12345)-749.dxf
改名后文件名:
AD1011T奥迪车.DSN
AD1011T-G1101-AA.DSN
AD1011T-G1101-AA-118-主副背料-四向-749.dxf
AD1011T-G1101-AA-118-主副背料-四向-(12345)-749.dxf

需要改的名字全部在一个表格中,现在能不能用批处理调用表格改名。一个个改的软件我有!
麻烦各位大仙大神了。
 楼主| 发表于 2016-1-6 15:26:21 | 显示全部楼层
用ren命令怎么改,有包括子文件夹
发表于 2016-1-6 16:18:42 | 显示全部楼层
txt不好?

水一发,读取表格内容
  1. /*&cls
  2. @echo off
  3. ::设置表格路径
  4. set "xlsfile=D:\改名.xls"
  5. cscript -nologo -e:jscript "%~f0" "%xlsfile%"
  6. pause&exit
  7. */

  8. var objExcel = new ActiveXObject('Excel.Application');
  9. var objBook = objExcel.Workbooks.open(WScript.Arguments(0));
  10. objBook.worksheets(1).activate;   //设置Sheet1为活动工作表
  11. var objSheet = objBook.activeSheet;
  12. var cnt = objSheet.usedrange.rows.count;
  13. for(var i = 2; i<=cnt; i++) {   //从第2行开始
  14.     var A= objSheet.Cells(i, 1).value;  //A列
  15.     var B= objSheet.Cells(i, 2).value;  //B列
  16.     WSH.echo(A+' --> '+B);
  17. }
  18. objBook.Close();
  19. objExcel.Quit();
复制代码
发表于 2016-1-6 16:25:48 | 显示全部楼层
来个第三方
ren2 -f -r "(AD1011)([^T].*)" "$1T$2"
 楼主| 发表于 2016-1-7 15:23:59 | 显示全部楼层
回复 4# pcl_test


    二种方法表示都不行。
发表于 2016-1-21 20:23:42 | 显示全部楼层
只想说,假设已有一个文件名为AD1011Txxxxx,你6楼的代码没做筛选,那么改名后就是AD1011TTxxxxx了
发表于 2016-1-22 00:12:16 | 显示全部楼层
可以考虑把excel转成CSV文件。批处理读取csv方便。
发表于 2016-1-22 00:15:50 | 显示全部楼层
 楼主| 发表于 2016-1-23 14:52:02 | 显示全部楼层
回复 7# pcl_test


    是的,我后来全部加了“-”
发表于 2016-1-26 23:44:09 | 显示全部楼层
回复 9# CrLf


   
  1. c:\>excel /?
  2. This program needs Java to run.
  3. Please download it at http://www.java.com
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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