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

[文件操作] 批处理如何将子文件夹的文件统一按特殊序列命名?

比如父文件夹名字“春天照片”下面有“照片01”照片02”照片03”照片04”照片04”五个子文件夹,并有照片若干。
要求:
1.将父文件夹包括子文件夹内的所有图片按照父文件夹名+数字同一命名,比如“照片01”里面如果有五张图片就是”春天照片_001"----”春天照片_005",而“照片02”的图片则从”春天照片_006"开始递增,以此类推。

2.如果父文件夹内有图片则优先重命名父内文件夹的图片,子文件夹再之后数字递增。

3.完成命名后将所有子文件夹的文件移动到父文件夹并删除子文件夹。

回复 1# myacg


推荐试试这个代码(虽然跟你的要求不是100%符合):
http://bbs.bathome.net/thread-69-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher

管理员好,我看论坛帖子自己写了一个,可以达到我的要求,请帮我看看有什么可以改进的。谢谢!
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. set /a n=1000
  5. for /f %%i in ("%cd%_") do (
  6.   for /f "delims=" %%b in ('dir /b /ad') do (
  7.   set /a n+=1
  8.   ren "%%~b" "%%~ni!n:~-2!"
  9.   )
  10. )
  11. rem 先处理文件夹
  12. set n=1000
  13. for /f "delims=" %%a in ('dir /b /ad') do (
  14.   pushd %%a
  15.   for %%b in (*.*) do (
  16.     set /a n+=1
  17.     ren "%%~b" "%%~a-!n:~-3!%%~xb"
  18.   )
  19.   popd
  20. )
  21. for /r /d %%a in (*) do move /y "%%a\*"&rd /s /q "%%a"
复制代码

TOP

回复 3# myacg


1. 第5行到第10行是为了实现顶楼描述的哪个功能点?
2. 顶楼描述的如果父文件夹内有图片则优先重命名父内文件夹的图片是通过哪几行代码实现的?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 myacg 于 2020-7-21 10:08 编辑

额,那几行是父目录命名。。。优先父目录图片这个功能我不会写。。。

如果写的不对麻烦帮改进一下。

TOP

  1. @echo off&setlocal enabledelayedexpansion&set n=1000
  2. for /f "delims=" %%i in ('dir /b/s *.jpg') do (set "p=%~dp0"&cd/d "!p!.."&set /a n+=1&call set "pf=%%p:!cd!\=%%"
  3. echo ren "%%i" "!pf:\=_!!n:~-3!%%~xi")
  4. echo 重命名完毕&pause
复制代码

TOP

回复 5# myacg
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set "n=1000"
  5. REM 如果父文件夹内有图片则优先重命名父内文件夹的图片
  6. for %%i in ("%~f0\..") do (
  7.     set prefix=%%~nxi
  8. )
  9. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  10.     set /a n+=1
  11.     ren "%%i" "%prefix%!n:~-3!%%~xi"
  12. )
  13. REM 子文件夹再之后数字递增
  14. for /f "delims=" %%a in ('dir /b /ad') do (
  15.     pushd "%%a"
  16.     for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  17.         set /a n+=1
  18.         ren "%%i" "%prefix%!n:~-3!%%~xi"
  19.         move "%prefix%!n:~-3!%%~xi" ..
  20.     )
  21.     popd
  22.     rd /q "%%a"
  23. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# Batcher

对比一下,我写的那是什么玩意

TOP

回复 8# myacg


    初学乍练已经算是非常好了
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表