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

[文件操作] 【已解决】请问批处理怎么实现文件批量改名和对照列表替换文件名?

本帖最后由 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

  1. for /f tokens^=^1-2^ delims^=^"^, %%i in (123.csv) do ren "%%j*" "%%i.jpg"
复制代码

TOP

回复 2# idwma


    我刚刚试了一下, 提示找不到文件, csv和bat都是ansi
自己做了一个示例文件
https://send.cm/d/8vO0

TOP

@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里面路径设置好,再使用!
Fit Strong

TOP

回复 3# 5i365
  1. @echo off
  2. for /f tokens^=^1-2^ delims^=^"^,^  %%i in (a.csv) do ren "%%j*" "%%i.jpg"
  3. pause
复制代码

TOP

本帖最后由 5i365 于 2022-2-20 20:45 编辑

回复 5# idwma


    大侠牛X, 真行了, 但是/f 后面的参数完全看不懂, 能写个PS代码吗? 对这个题, 一点头绪没有

感觉批处理和PS各有优势, 估计PS代码就没有这么精简了吧

TOP

回复 5# idwma


    发现一个问题, 如果csv文件名中有空格,例如 a b.csv 把文件名, 加上""和''都不灵了

TOP

回复 7# 5i365
  1. @echo off
  2. for /f tokens^=^1-2^ delims^=^"^,^  %%i in ('type "a b.csv"') do ren "%%j*" "%%i.jpg"
  3. pause
复制代码
  1. powershell "ipcsv a.csv -header 'a','b'|foreach{foreach($i in dir $($_.b.trim()+'*')){ren $i $($_.a.trim()+'.jpg')}}"
复制代码

TOP

感谢各位大佬,问题完美解决了

TOP

学习了学习了

TOP

返回列表