Board logo

标题: [文件操作] 求一个批量修改文件名的bat脚本 [打印本页]

作者: dzwind    时间: 2024-6-14 16:00     标题: 求一个批量修改文件名的bat脚本

求高手给做一个批量修改文件名的批处理:
要求:
1、通过拖拽的方式执行.
2、bat想要执行的效果是将拖拽目录下的*.tif *.jpg *.png所有的文件都顺序命名为%date%-1.jpg…2.png ...3.tif
如:执行bat前d:\123目录下有如下几个文件
d:\123\0.jpg
d:\123\0(1).jpg
d:\123\0(2).png
d:\123\0(3).tif
执行bat后想要得到的效果如下
d:\123\20240614-1.jpg
d:\123\20240614-2.jpg
d:\123\20240614-3.png
d:\123\20240614-4.tif
谢谢
作者: 77七    时间: 2024-6-14 17:28

本帖最后由 77七 于 2024-6-14 17:29 编辑
  1. @echo off
  2. if "%~1" equ "" (
  3. exit
  4. ) else (
  5. pushd "%~1" || exit
  6. )
  7. for /f "delims=" %%x in ('powershell -c "'{0:yyyyMMdd}' -f (get-date)"') do (
  8. for /f "delims=" %%i in ('dir /b /a-d *.jpg *.png *.tif') do (
  9. for /f "tokens=1-2 delims=()" %%a in ("%%~ni") do (
  10. set /a n=%%b+1
  11. call ren "%%i" "%%x-%%n%%%%~xi"
  12. )
  13. )
  14. )
  15. pause
复制代码

作者: dzwind    时间: 2024-6-14 17:36

回复 2# 77七


    谢谢大师的帮助,但我xp系统没有powershell软件,
作者: 77七    时间: 2024-6-14 17:49

回复 3# dzwind


  1. @echo off
  2. if "%~1" equ "" (
  3. exit
  4. ) else (
  5. pushd "%~1" || exit
  6. )
  7. for /f "delims=" %%a in ('wmic os get LocalDateTime ^|findstr [0-9]') do (
  8. set x=%%a
  9. )
  10. for /f "delims=" %%i in ('dir /b /a-d *.jpg *.png *.tif') do (
  11. for /f "tokens=1-2 delims=()" %%a in ("%%~ni") do (
  12. set /a n=%%b+1
  13. call ren "%%i" "%x:~0,8%-%%n%%%%~xi"
  14. )
  15. )
  16. pause
复制代码

作者: dzwind    时间: 2024-6-14 17:53

回复 4# 77七


    这回能用了。谢谢




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