[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 77七 于 2023-3-12 00:40 编辑
  1. @echo off
  2. cd /d "D:\AAA\"
  3. for /f "delims=" %%i in ('dir /b /a-d ') do (
  4.         for /f "delims=" %%a in ('type "%~f0" ^| find "%%~nxi"') do (
  5.                 echo ren "%%i" "%%a"
  6.                 ren "%%i" "%%a"
  7.         )
  8. )
  9. pause
  10. exit
  11. :以下存放新名
  12. 1-001-john.txt
复制代码
bat小白,请多指教!谢谢!

TOP

回复 6# 小白唐唐


    没有限制为txt文件,txt文件只是顶楼举的例子

除了文件夹外的任意带扩展名的文件都可以(不和代码冲突就好,比如一个文件没有扩展名 名为 "for" 就和代码冲突了)
bat小白,请多指教!谢谢!

TOP

回复 14# 小白唐唐


   实际文件名呢?如果是单纯的测试验证代码,尽量保证新旧名称11对应吧,不要存在交叉、命名后重复什么的,看到你罗列的11.pdf 21.pdf ,两者只有 第一位数字是不同的,原来的文件名只能是11.p  21.pd之类的了,有点不符合实际。如果是实际需求,可以另开贴询问,感觉你和楼主的需求有点出入。
bat小白,请多指教!谢谢!

TOP

回复 37# 小白唐唐


   依照文件日期时间升序的顺序,列出新文件名到文本,再对文件进行重命名
  1. @echo off
  2. rem 将list.txt和批处理文件存放在同目录下  "D:\123\" 即文件目录
  3. cd /d "D:\123\"
  4. setlocal enabledelayedexpansion
  5. set /a n=0
  6. for /f "delims=" %%i in ('dir /b /a-d /o:d') do (
  7. set /a n=n+1,m=0
  8. for /f "delims=" %%a in ('type "%~dp0list.txt"') do (
  9. set /a m=m+1
  10. if !n! equ !m! (
  11. echo ren "%%i" "%%a"
  12. ren "%%i" "%%a"
  13. )
  14. )
  15. )
  16. endlocal
  17. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 40# 小白唐唐


   我的代码也有问题吗?terse大佬的代码
  1. for /l %%i in (1,1,!n!) do ren "!ph!\!file_%%i!" "!new_file_%%i!"
复制代码


因为 !file_%%i! 这个变成空值了,所以把文件夹给重命名了
你试着把  !n!改成 !m! 试试,或者判断一下  !file_%%i!  这个是不是空值在重命名
不过你既然决定以这种方式重命名,命名之前可以看一下文本有多少行,文件有多少个,就不存在这些问题
bat小白,请多指教!谢谢!

TOP

回复 45# image1001


   要怎么改呢?举个例子吧
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2023-3-19 20:20 编辑

回复 47# image1001


  1. @echo off
  2. rem 匹配文件名包含扩展名 后7位,即后7位如包含在新名中就执行改名
  3. rem 注意  xxxxxx.xxx  的后7位 为  xxx.xxx
  4. rem 使用前先测试
  5. setlocal enabledelayedexpansion
  6. set n=7
  7. cd /d "D:\AAA\"
  8. for /f "delims=" %%i in ('dir /b /a-d ') do (
  9.         set "str=%%~nxi"
  10.         set "str=!str:~-%n%!"
  11.         set m=
  12.         for /f "delims=" %%a in ('type "%~f0" ^| find "!str!"') do (
  13.                 if not defined m (
  14.                         echo ren "%%i" "%%a"
  15.                         ren "%%i" "%%a"
  16.                         set m=1
  17.                 )
  18.         )
  19. )
  20. endlocal
  21. pause
  22. exit
  23. :以下存放新名
  24. 1-001-john.txt
复制代码
bat小白,请多指教!谢谢!

TOP

回复 49# image1001


   http://www.bathome.net/thread-996-1-1.html
参考下这个教程, 修改第10行
例如
set a=!a:~0,n!
舍弃0位,保留n位
bat小白,请多指教!谢谢!

TOP

返回列表