Board logo

标题: [文件操作] 批处理如何修改文件名与指定文件名-数量很大 [打印本页]

作者: playinthesky    时间: 2021-1-16 16:09     标题: 批处理如何修改文件名与指定文件名-数量很大

旧标准:
J023-2019-Y-0000-0000.jpg

新标准:
J023-WS·2019-Y-0000-0000.jpg
这个点前面的是两位英文字母,能否写一个界面,键入KJ,就可以变成 J023-KJ·2019-Y-0000-0000.jpg,键入ZP, 就可以变成 J023-ZP·2019-Y-0000-0000.jpg

0000,是四位数的序列,比方:
J023-WS·2019-Y-0001-0555.jpg
.
,很多件

J023-WS·2019-Y-0999-0999.jpg
由于我的同事工作失误,将J023-WS·2019-Y-0000-0000.jpg 变成了 J023-WS-2019-Y-0000-0000.jpg

我写了补救,可是生成的文件名却是:J023-WS路2019-Y-0000-0000.jpg
  1. @echo off
  2.     for %%i in (*.jpg) do (
  3.         for /f "tokens=1-4 delims=-." %%a in ("%%i") do (
  4.     ren %~dp0\%%a-%%b-%%c-%%d-%%e.jpg %~dp0\%%a-WS·2019-%%c-%%d-%%e.jpg
  5.         )
  6.     )
  7. pause
复制代码
有数十万份这样的文件,年度会改变,也可能会是2006 J023-KJ·2006-D30-0999-0555.jpg

请大神指点,因为这个 · 是单位要求,可是WINDOWS下总会出现一批处理会变成汉字,求教。

目标:
A-B-C-D-E.JPG
变成
让B里面发生改变,原先是年份,要在年份前面添加 文件的属性,原来是2019,要变成 字母 · 年度。
A-N·B-C-D-E.JPG

文件有十几万份,有高手能否相助?
作者: Batcher    时间: 2021-1-16 19:58

回复 1# playinthesky


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: lancer    时间: 2021-1-16 20:37

  1. @echo off
  2. title 批量替换文件(夹)名的部分字符串
  3. echo.
  4. echo 本批处理可批量替换文件名中部分字符串,不处理子目录
  5. echo.
  6. :AA
  7. set str=%~dp0
  8. set /p "str=输入路径(直接回车,则默认批处理所在路径):"
  9. cd /d "%str%"
  10. echo. &echo 当前路径为 %str%
  11. :S
  12. setlocal enabledelayedexpansion
  13. echo. & echo 当要替换的文件输入为*A这种形式,且替换为空时,会自动删除字符A以前的所有字符(包含字符A)
  14. echo.&set /p strtemp1= 请输入要替换的文件(文件夹)名字符串(可替换空格):
  15. echo.&set /p strtemp2= 请输入替换后的文件(文件夹)名字符串(删除,则直接回车):
  16. echo.
  17. echo 正在修改文件(夹)名中请稍候……
  18. for /f "delims=" %%i in ('dir /a /b') do (
  19. set "f=%%~ni" ::将变量i扩展到文件名,并赋值给f
  20. set "k=%%~xi" ::将变量i扩展到后缀,并赋值给k
  21. set "f1=!f:%strtemp1%=%strtemp2%!" ::将f中的字符串1替换成字符串2,并赋值给f1
  22. if not "%%i"==%0 (
  23. if not "!f!!k!"=="!f1!!k!" (
  24. if exist "!f1!!k!" (
  25. echo 由于!f1!!k!存在同名,!f!!k! 文件名未改 ) else ren "!f!!k!" "!f1!!k!"
  26. )
  27. )
  28. )
  29. echo.
  30. echo 替换完成。。。。。。
  31. endlocal ::结束变量延迟
  32. echo.
  33. echo ===========================================================
  34. echo.& echo 【1】……更换路径
  35. echo.& echo 【2】……继续在当前目录替换
  36. echo.
  37. set /p "xuan= 请选择【1】或【2】:"
  38. echo.
  39. if %xuan% equ 1 goto AA else(
  40.     if %xuan% equ 2 goto S
  41. )
  42. echo.&pause
复制代码
这是一个替换文件名中部分字符串的批处理,你可以用几个文件测试一下
作者: playinthesky    时间: 2021-1-17 00:10

回复 2# Batcher


    非常感激!
作者: playinthesky    时间: 2021-1-17 00:10

回复 3# lancer


    亲测可用,感激不尽。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2