Board logo

标题: [文件操作] 求助批量重命名当前目录下以及所有子目录下的文件,添加指定字符串前缀和递增数字 [打印本页]

作者: thp2008    时间: 2018-4-1 14:16     标题: 求助批量重命名当前目录下以及所有子目录下的文件,添加指定字符串前缀和递增数字

本帖最后由 pcl_test 于 2018-4-1 19:16 编辑

各位大神,请帮帮忙。
       要求如下,批量重命名,当前目录及当前目录下的所有子目录中的文件名,保持扩展名不变。扩展名可能有几种。命名规则,批处理提示让我输入一个新文件名的前缀,然后在前缀后面加数字就可以了。
比如,我输入前缀ABC,那新文件名就是ABC1.扩展名。数字自动累加就行了。
作者: yhcfsr    时间: 2018-4-1 16:06

本帖最后由 yhcfsr 于 2018-4-1 16:13 编辑
  1. @echo off
  2. set "源目录=D:\test1"
  3. cd/d "%源目录%"||(echo;检查源目录设置是否正确&pause>nul&exit)
  4. set/p f=输入前缀:
  5. for /f "delims=" %%a in ('dir/a-d/s/b') do set/a n+=1&&call ren "%%a" "%f%%%n%%%%~xa"
复制代码

作者: thp2008    时间: 2018-4-1 16:29

回复 2# yhcfsr

谢谢你的帮助,我测试了一下,你的代码可以,没有问题,我想优化显示输出。所以调整了一下,代码如下,可以改名成功,但是会多一个%号。请帮我修正一下,另外,比如我的批处理的文件名为888.bat,我将这个批处理复制到当前目录下运行,能不能在运行的时候自已排除掉自已的文件名更名,非常感谢!
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set /p NewName=请输入新文件名的前缀部分(如ABC):
  4. for /f "delims=" %%a in ('dir/a-d/s/b') do (
  5. echo 正在改名:"%%a" =》 "%NewName%%%%%~xa"
  6. ren "%%a" "%NewName%%%%%~xa"
  7. set/a n+=1
  8. )
复制代码

作者: 狄钦dQ    时间: 2018-4-1 17:17

本帖最后由 狄钦dQ 于 2018-6-10 14:14 编辑

重命名所有文件,排除批处理本身
  1. @echo off
  2. mode con cols=70 lines=38
  3. color a
  4. title 批量重命名
  5. setlocal enabledelayedexpansion
  6. set num=0
  7. set /p Filename= 请输入文件名:
  8. for /f  "usebackq " %%i in (`dir /a-d /b /s /on ^| findstr /V "排除文件名.bat\>"`) do (
  9. for /f "delims=. tokens=2" %%a in ("%%i") do (ren "%%i" "%Filename%!num!"."%%a")
  10. set /a num+=1
  11. ) 2>NUL
  12. echo 处理完毕!按任意键结束。
  13. pause>NUL
复制代码

作者: yhcfsr    时间: 2018-4-1 20:32

本帖最后由 yhcfsr 于 2018-4-1 20:34 编辑

回复 3# thp2008
  1. @echo off&setlocal EnableDelayedExpansion
  2. set /p NewName=请输入新文件名的前缀部分(如ABC):
  3. for /f "delims=" %%a in ('dir/a-d/s/b') do if not "%%a"=="%%~f0" (
  4. set/a n+=1
  5. echo 正在改名:"%%a" =》 "%NewName%!n!%%~xa"
  6. ren "%%a" "%NewName%!n!%%~xa"
  7. )
复制代码

作者: thp2008    时间: 2018-4-2 23:37

谢谢,二位的帮助,搞定。
作者: ww0000    时间: 2018-4-12 20:47

做个记号,用得到




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