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

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

TOP

描述得模模糊糊,看了好几遍才搞明白。

TOP

回复 21# miss_sokuber


    哪一条命令没正确?
脚本保存为 test.bat,编码格式选 ansi,test.bat 与 1001、1002 文件夹存放在同一级目录里面。
我测试没有问题。

TOP

回复 23# miss_sokuber


    这样试试,如果仍然不行,我放弃。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a x=0
  4. for %%i in (attack dead hit run stand) do (
  5.     set "s=%%i" & set "s=!s:~0,1!"
  6.     set "_!x!=%%i"
  7.     set /a x+=1, #!s!=x
  8. )
  9. REM 查找png文件,其上一级目录名为a、d、h、r、s,上上一级目录名为数字0-4
  10. for /f "delims=" %%i in ('dir /b /a-d /s *.png ^| findstr /i "\\[0-4]\\[adhrs]\\[^\\]*$"') do (
  11.     REM 当前png文件所在的目录
  12.     set "curPath=%%~dpi"
  13.     if /i "!prePath!" NEQ "!curPath!" (
  14.         for %%j in ("%%i\..") do set /a n = !#%%~nj! * 1000
  15.         REM png文件的上上一级目录
  16.         for %%j in ("%%i\..\..") do (
  17.             set "newFolder=!_%%~nj!"
  18.             md "%%i\..\..\..\!newFolder!" 2>nul
  19.         )
  20.     ) else (
  21.         set /a n+=1
  22.     )
  23.     REM 前一个png文件所在的目录
  24.     set "prePath=%%~dpi"
  25.     move "%%i" "%%i\..\..\..\!newFolder!\0!n!%%~xi"
  26. )
  27. REM 删除空目录
  28. for /f "delims=" %%i in ('dir /b /ad /s ^| sort /r') do rd "%%i" 2>nul
  29. pause
复制代码
1

评分人数

TOP

回复 31# miss_sokuber


    图片命名规则:第一个字符是0,第二个字符是0,1,2,3,4这五个文件夹其中一个的名称+1,然后接3个0,最后一个字符是从0开始顺延的自然数,结果是:0(数字文件夹名称+1)0000,0(数字文件夹名称+1)0001...,
新创建文件夹命名:attack,dead,hit,run,stand,
attack包括0,1,2,3,4下面的a
dead包括0,1,2,3,4下面的d
hit包括0,1,2,3,4下面的h
run包括0,1,2,3,4下面的r
stand包括0,1,2,3,4下面的s
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (attack dead hit run stand) do (
  4.     set "s=%%i" & set "s=!s:~0,1!"
  5.     set "_!s!=%%i"
  6. )
  7. REM 查找png文件,其上一级目录名为a、d、h、r、s,上上一级目录名为数字0-4
  8. for /f "delims=" %%i in ('dir /b /a-d /s *.png ^| findstr /i "\\[0-4]\\[adhrs]\\[^\\]*$"') do (
  9.     REM 当前png文件所在的目录
  10.     set "curPath=%%~dpi"
  11.     if /i "!prePath!" NEQ "!curPath!" (
  12.         REM png文件的上上一级目录
  13.         for %%j in ("%%i\..\..") do set /a n = "(%%~nj + 1) * 10000"
  14.         for %%j in ("%%i\..") do (
  15.             set "newFolder=!_%%~nj!"
  16.             md "%%i\..\..\..\!newFolder!" 2>nul
  17.         )
  18.     ) else (
  19.         set /a n+=1
  20.     )
  21.     REM 前一个png文件所在的目录
  22.     set "prePath=%%~dpi"
  23.     move "%%i" "%%i\..\..\..\!newFolder!\0!n!%%~xi"
  24. )
  25. REM 删除空目录
  26. for /f "delims=" %%i in ('dir /b /ad /s ^| sort /r') do rd "%%i" 2>nul
  27. pause
复制代码
1

评分人数

TOP

返回列表