标题: [文件操作] 【已解决】请问批处理怎么实现文件批量改名和对照列表替换文件名? [打印本页]
作者: mustforver 时间: 2022-2-20 17:20 标题: 【已解决】请问批处理怎么实现文件批量改名和对照列表替换文件名?
本帖最后由 mustforver 于 2022-2-20 23:59 编辑
现在手里有大量文件,名字都是这种格式:
4274-黑暗随从者.jpg
9279-小丑与锁鸟.jpg
10000-宝石骑士·斜绿.jpg
11200-吸血鬼妖女.jpg
…………
现在的主要任务是把所有文件改成另一串数字,我手里有一个对应的表格:
76184692 4009
46986414 4041
6368038 4044
40374923 4065
…………
其中前一列是目标文件名,后一列是现有文件名中“-”符号前的那一串数字。
然后目标格式如下:
76184692.jpg
46986414.jpg
6368038.jpg
…………
表格是csv格式的,大概有1.2w个文件,有大神能帮忙吗,先给各位大佬跪谢一个 OTL
作者: idwma 时间: 2022-2-20 17:38
- for /f tokens^=^1-2^ delims^=^"^, %%i in (123.csv) do ren "%%j*" "%%i.jpg"
复制代码
作者: 5i365 时间: 2022-2-20 18:29
回复 2# idwma
我刚刚试了一下, 提示找不到文件, csv和bat都是ansi
自己做了一个示例文件
https://send.cm/d/8vO0
作者: Fit 时间: 2022-2-20 20:01
@echo off&setlocal enabledelayedexpansion
rem csv文件路径(绝对路径)
set "csv=C:\Users\Administrator.SD-20200130HORC\Desktop\1.csv"
rem 设置jpg文件夹得路径(绝对路径)
set "jpg=C:\Users\Administrator.SD-20200130HORC\Desktop\1"
cd /d %jpg%
(for /f "tokens=1,2 delims=," %%i in (%csv%) do (
for /f "tokens=1,2,3 delims=-." %%a in ('dir /b /a-d *.jpg^| find "%%j"') do (
ren "%%a-%%b.%%c" "%%i.%%c" >nul
)
))&pause
先一定备份后,bat里面路径设置好,再使用!
作者: idwma 时间: 2022-2-20 20:38
回复 3# 5i365 - @echo off
- for /f tokens^=^1-2^ delims^=^"^,^ %%i in (a.csv) do ren "%%j*" "%%i.jpg"
- pause
复制代码
作者: 5i365 时间: 2022-2-20 20:44
本帖最后由 5i365 于 2022-2-20 20:45 编辑
回复 5# idwma
大侠牛X, 真行了, 但是/f 后面的参数完全看不懂, 能写个PS代码吗? 对这个题, 一点头绪没有
感觉批处理和PS各有优势, 估计PS代码就没有这么精简了吧
作者: 5i365 时间: 2022-2-20 21:33
回复 5# idwma
发现一个问题, 如果csv文件名中有空格,例如 a b.csv 把文件名, 加上""和''都不灵了
作者: idwma 时间: 2022-2-20 21:47
回复 7# 5i365 - @echo off
- for /f tokens^=^1-2^ delims^=^"^,^ %%i in ('type "a b.csv"') do ren "%%j*" "%%i.jpg"
- pause
复制代码
- powershell "ipcsv a.csv -header 'a','b'|foreach{foreach($i in dir $($_.b.trim()+'*')){ren $i $($_.a.trim()+'.jpg')}}"
复制代码
作者: mustforver 时间: 2022-2-20 23:59
感谢各位大佬,问题完美解决了
作者: cavid 时间: 2022-2-22 18:18
学习了学习了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |