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

我上面的意思是,不如0下的合并到0,1下的合并到1...。省得再创建新的文件夹了。

TOP

回复 16# qixiaobin0715
你说的对,改名无任务意义,只需要重新创建新文件夹就好了,原谅我之前的胡乱描述
学到学不动为止!@

TOP

你想表达的意思是:将最末级文件夹中的文件改名并上移一级,删除移空的文件夹。文件夹改名有意义吗?

TOP

回复 14# qixiaobin0715
0下面的就合并到attack,1下面的就合并到dead,下面的就合并到hit,下面的就合并到run,下面的就合并到stand
学到学不动为止!@

TOP

可能我理解的有问题:

TOP

回复 7# WHY
感谢感谢,基本实现了,复制图片那里错了,正确的是a,d,h,r,s五个文件夹下的图片合并...,有几张就合并几张,
学到学不动为止!@

TOP

回复 9# Batcher
基本实现了,复制图片那里错了,正确的是a,d,h,r,s五个文件夹下的图片合并...,有几张就合并几张,
学到学不动为止!@

TOP

1001文件夹下,若有数字文件夹0,1,2,3,4共五个,那么每个子文件夹下都有a,d,h,r,s五个文件夹,再往里面就是图片了...。需将a,d,h,r,s五个文件夹下的图片合并...,有几张就合并几张,并重命名文件,并将文件夹a,b...移到1001文件夹下,最后删除0,1,2,3,4空文件夹。其它依此类推。
图片命名规则:第一个字符是0,第二个字符是0,1,2,3,4这五个文件夹的名称+1,然后接3个0,最后一个字符是从1顺延的自然数,结果是:0(数字文件夹名称+1)0001,0(数字文件夹名称+1)0002...有几张图片尾数就是几,
文件夹命名:a->attack,d->dead,h->hit,r->run,s->stand,
附带一张结构图
学到学不动为止!@

TOP

回复 8# qixiaobin0715
你的描述有点错误,也许是我说的太啰嗦了,哈哈哈,我重组一下我的需求,是这样的:
1001文件夹下,若有数字文件夹0,1,2,3,4共五个,那么每个子文件夹下都有a,d,h,r,s五个文件夹,再往里面就是图片了...。需将a,d,h,r,s五个文件夹下的图片合并...,有几张就合并几张,并重命名文件,并将文件夹a,b...移到1001文件夹下,最后删除0,1,2,3,4空文件夹。其它依此类推。
学到学不动为止!@

TOP

回复 8# qixiaobin0715


    可能每个人的理解不一样,看完楼主顶楼的描述,我可以写出完整的代码。但是看完你这个描述,感觉还是有很多需求不理解。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 qixiaobin0715 于 2020-10-15 09:46 编辑

回复 1# miss_sokuber

根据你的要求,这样描述要清楚些:
1001文件夹下,若有数字文件夹0,1,2,3,4共五个,那么子文件夹a有五个,b也有五个...。需将五个a文件夹合并,五个b文件夹合并...,重命名文件,并将文件夹a,b...移到1001文件夹下,最后删除0,1,2,3,4空文件夹。其它依此类推。

TOP

本帖最后由 WHY 于 2020-10-15 09:20 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 查找png文件,其上上一级目录名为单个数字
  4. for /f "delims=" %%i in ('dir /b /a-d /s *.png ^| findstr "\\[0-9]\\[^\\]*\\[^\\]*$"') do (
  5.     REM 当前png所在目录
  6.     set "curPath=%%~dpi"
  7.     if /i "!prePath!" NEQ "!curPath!" (
  8.         REM png文件的上上一级目录名
  9.         for %%j in ("%%i\..\..") do set /a n = "(%%~nj + 1) * 1000 + 100001"
  10.         if defined prePath (
  11.             for %%j in ("!prePath!.") do (
  12.                 md "!prePath!..\..\%%~nxj" 2>nul
  13.                 move "!prePath!*.png" "!prePath!..\..\%%~nxj\"
  14.             )
  15.         )
  16.     ) else (
  17.         set /a n+=1
  18.     )
  19.     REM 前一个png所在目录
  20.     set "prePath=%%~dpi"
  21.     ren "%%i" "!n:~1!%%~xi"
  22. )
  23. if defined prePath (
  24.     for %%j in ("!prePath!.") do (
  25.         md "!prePath!..\..\%%~nxj" 2>nul
  26.         move "!prePath!*.png" "!prePath!..\..\%%~nxj\"
  27.     )
  28. )
  29. REM 删除空目录
  30. for /f "delims=" %%i in ('dir /b /ad /s ^| sort /r') do rd "%%i" 2>nul
  31. pause
复制代码

TOP

回复 1# miss_sokuber


测试代码之前,请备份你的文件夹。

请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b /ad') do (
  4.     pushd "%%a"
  5.     set FolderNum=1000
  6.     md a b h r s
  7.     for /f "delims=" %%b in ('dir /b /ad ^| findstr /v /c:"a" /c:"b" /c:"h" /c:"r" /c:"s"') do (
  8.         pushd "%%b"
  9.         set /a FolderNum+=1
  10.         for /f "delims=" %%c in ('dir /b /ad') do (
  11.             set FileNum=1000
  12.             for /f "delims=" %%d in ('dir /b /a-d "%%c\*.png"') do (
  13.                 set /a FileNum+=1
  14.                 set "NewName=!FolderNum:~02!!FileNum:~-3!%%~xd"
  15.                 echo 正在处理文件 %%a\%%b\%%c\%%d
  16.                 ren "%%c\%%d" "!NewName!"
  17.                 move "%%c\!NewName!" "..\%%c"
  18.             )
  19.             rd "%%c"
  20.         )
  21.         popd
  22.         rd "%%b"
  23.     )
  24.     popd
  25. )
复制代码
1

评分人数

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

TOP

回复 4# qixiaobin0715
其实就是数字+1,0变成1.1变成2,这样,
学到学不动为止!@

TOP

回复 3# miss_sokuber
文件夹名是9,10,11...呢?9+1=10

TOP

返回列表