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

[文件操作] 批处理怎样根据csv列出的新旧文件名对应关系重命名文件

本帖最后由 pcl_test 于 2017-4-30 22:29 编辑

假定一个文件夹里面有几百个文件.(数目不定).
另有一个csv文件, 里面有几百行,(对应着上述几百个文件), 有两列, 第1列是旧文件名------存储着这几百个文件的文件名(含后缀), 第2列存贮着新文件名(含后缀, 并且很可能与旧文件后缀不同)-----想要改成的目标文件名
至于这个csv文件的存放位置, 即可以放在上述文件夹内, 也可以放其他地方, 总之怎么编程简单怎么来.

能否根据此csv, 批量改名呢?
请考虑: 文件名中可能有多种语言, 各种特殊字符, 空格等等......如果由于某一行的此类问题导致错误, 能否跳过, 继续下一行的文件名修改?


谢谢. 搜索了很久没找到类似的软件, 只好来求助了.

假定 CSV 文件的分隔符为逗号 (,)   CSV   要改名的文件   批处理 都放在同一个目录里
  1. @echo off
  2. for /f "delims=" %%a in (a.csv) do (
  3.     for /f "tokens=1-2 delims=," %%a in ("%%a") do (
  4.         ren "%%~a" "%%~b"
  5.     )
  6. )
复制代码

TOP

假定 CSV 文件的分隔符为逗号 (,)   CSV   要改名的文件   批处理 都放在同一个目录里
aa77dd@163.com 发表于 2015-6-30 08:27


回复好快!

代码完美!

实验了一下, 首先由于","作为分隔符不合适, 因为文件名中出现太多了, 所以尝试了修改系统的列表分隔符为一个货币符号, 结果后来哪个步骤说属于unicode字符......后来又试了改成希腊字符, 结果批处理无法成功分隔, 连成一片了......最后发现";"在文件名中没有出现过, 就改了这个. 非常完美.

把a和b互换一下, 形成了另一个批处理, 就可以把所有文件名再改回来, 这样就实现了一整套系统.

非常感谢!!!

TOP

回复 3# joshatt


    改文件夹可以不啊

TOP

返回列表