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

[文件操作] BAT批量重命名文件夹及文件夹内文件的名字

RT,现有一堆R打头文件夹,如R0 R1 R2 ......R100 R101等等,每个R打头的文件夹中有一堆C打头的jpg文件 如C0 C1 C2......C100 C101等等
要将文件夹统一命名为0 1 2......,将文件命名为0 1 2......
方法已经大致实现,但是存在问题,就是在修改时顺序是R0 R1 R10 R11.......R100 R101......,C的文件也是如此。
考虑过使用补零的方式,即将文件名先改成R00 R01 R02的形式,但是到R100的时候就有不好用了
也看过用截取字符串的方式来解决,但是语句始终不对,求大神指点。

本帖最后由 /zhqsystem/zhq 于 2018-7-2 22:07 编辑

几行代码就搞定了。。。。,第一个红色区域改成a-d是文件
,第二个区域改成扩展名,第三个区域改字符,需要变量延迟开启,其他主代码不动,源代码是改文件夹的包含子文件夹,特别说明:主文件夹和子文件夹不能同时存在要求的字符否则需要多次运行
for /f "delims=" %%i in ('dir/ad/s/b ".\*.*"')do if /i not "%%~nxi"=="%~nx0" (
set "#=\%%~nxi"
set "#=!#:\r=\!"
for /f "delims=\" %%j in ("!#!")do  ren "%%~fi" "%%~nxj"
)
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

解决了 就是采用直接去掉R或者C的方式
附bat
  1. @echo off & color 3a & setlocal enabledelayedexpansion
  2. title 批量替换文件(文件夹)名
  3. echo 此批处理可批量替换本文件所在文件夹下所有文件(文件夹)名。
  4. echo.
  5. set /p str1= 请输入要替换的文件(文件夹)名字符串(可替换空格):
  6. set /p str2= 请输入替换后的文件(文件夹)名字符串(去除则直接回车):
  7. echo.
  8. echo 正在替换文件名……
  9. for /f "delims=" %%a in ('dir /a-d /s /b') do (
  10. if "%%~nxa" neq "%~nx0" (
  11. set "f=%%~na"
  12. set "f=!f:%str1%=%str2%!"
  13. if not exist "%%~dpa!f!%%~xa" ren "%%a" "!f!%%~xa"
  14. )
  15. )
  16. echo 替换文件名完成
  17. echo.
  18. echo 正在替换文件夹名……
  19. :folder
  20. set n=0
  21. for /f "delims=" %%i in ('dir /ad /s /b ^|find "%str1%"') do (
  22. set t=%%~ni
  23. set t=!t:%str1%=%str2%!
  24. if not exist "%%~dpi!t!" ren "%%i" "!t!" 2>nul
  25. set /a n+=1
  26. )
  27. if "!n!" neq "0" goto folder
  28. echo 替换文件夹名完成
  29. pause
复制代码

TOP

回复 6# 狄钦dQ


    对 去掉开头的R和C也是可以的 就是不知道怎么写 之前就没有写过bat

TOP

回复 5# Batcher


    补零的话 两位数也要补一位 而且如果涉及到上千的 两位数就要补两个零了

TOP

回复 4# Batcher


    排序方式是这样的
R0
R1
R10
R100
R101
R102
R103
R104
R105
R106
R107
R108
R109
R11
R110
R111
R112
R113
R114
R115
R116
R117
R118
R119
......

TOP

没理解你的意思,请贴出代码和实际环境。按楼主表述,R/C开头后的数字是真的1,2,3...的话,就是简单的去掉头字母。如果是处理顺序的问题,开头补零。0001,0002,0003,...0100

TOP

100万个文件夹也才7位数嘛,补0比较方便吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# alanwhy


不是数字排序,做个简单的试验就知道了

C:\Test>dir /b /ad
10
2
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    可以,但是担心有些文件夹可能会存在上千上万的量级,有一条思路是先将名字前的R C去掉,因为现在是字符串的类型排序,去掉后会不会是数字的类型排序?

TOP

多补一个0可以吗,比如 R000 R001 R002 ... R100
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表