标题: [文件操作] 批处理怎样根据csv列出的新旧文件名对应关系重命名文件 [打印本页]
作者: joshatt 时间: 2015-6-30 08:09 标题: 批处理怎样根据csv列出的新旧文件名对应关系重命名文件
本帖最后由 pcl_test 于 2017-4-30 22:29 编辑
假定一个文件夹里面有几百个文件.(数目不定).
另有一个csv文件, 里面有几百行,(对应着上述几百个文件), 有两列, 第1列是旧文件名------存储着这几百个文件的文件名(含后缀), 第2列存贮着新文件名(含后缀, 并且很可能与旧文件后缀不同)-----想要改成的目标文件名
至于这个csv文件的存放位置, 即可以放在上述文件夹内, 也可以放其他地方, 总之怎么编程简单怎么来.
能否根据此csv, 批量改名呢?
请考虑: 文件名中可能有多种语言, 各种特殊字符, 空格等等......如果由于某一行的此类问题导致错误, 能否跳过, 继续下一行的文件名修改?
谢谢. 搜索了很久没找到类似的软件, 只好来求助了.
作者: aa77dd@163.com 时间: 2015-6-30 08:27
假定 CSV 文件的分隔符为逗号 (,) CSV 要改名的文件 批处理 都放在同一个目录里- @echo off
- for /f "delims=" %%a in (a.csv) do (
- for /f "tokens=1-2 delims=," %%a in ("%%a") do (
- ren "%%~a" "%%~b"
- )
- )
复制代码
作者: joshatt 时间: 2015-6-30 09:18
假定 CSV 文件的分隔符为逗号 (,) CSV 要改名的文件 批处理 都放在同一个目录里
aa77dd@163.com 发表于 2015-6-30 08:27
回复好快!
代码完美!
实验了一下, 首先由于","作为分隔符不合适, 因为文件名中出现太多了, 所以尝试了修改系统的列表分隔符为一个货币符号, 结果后来哪个步骤说属于unicode字符......后来又试了改成希腊字符, 结果批处理无法成功分隔, 连成一片了......最后发现";"在文件名中没有出现过, 就改了这个. 非常完美.
把a和b互换一下, 形成了另一个批处理, 就可以把所有文件名再改回来, 这样就实现了一整套系统.
非常感谢!!!
作者: shengyisy 时间: 2019-12-12 20:57
回复 3# joshatt
改文件夹可以不啊
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |