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

[文件操作] 【分享】批处理按年份和十二生肖归类文件

十二生肖
  1. @echo off
  2. cd /d "%~dp0"
  3. set "dp=%~dp0"
  4. set "dp=%dp:\=\\%"
  5. set n=1
  6. for /f "delims=" %%i in ('dir /b /s /a-d ^|find /v "%~f0" ^|findstr /rvibc:\\"%dp%[1-2][0-9][0-9][0-9]\\\\"') do (
  7.     for /f "tokens=1-2 delims=/" %%a in ("%%~ti") do (
  8.         setlocal
  9.         if "%%b" leq "01" (
  10.             call :1 "%%a年\1-子鼠" "%%i"
  11.         )
  12.         if "%%b" leq "02" (
  13.             call :1 "%%a年\2-丑牛" "%%i"
  14.         )
  15.         if "%%b" leq "03" (
  16.             call :1 "%%a年\3-寅虎" "%%i"
  17.         )
  18.         if "%%b" leq "04" (
  19.             call :1 "%%a年\4-卯兔" "%%i"
  20.         )
  21.         if "%%b" leq "05" (
  22.             call :1 "%%a年\5-辰龙" "%%i"
  23.         )
  24.         if "%%b" leq "06" (
  25.             call :1 "%%a年\6-巳蛇" "%%i"
  26.         )
  27.         if "%%b" leq "07" (
  28.             call :1 "%%a年\7-午马" "%%i"
  29.         )
  30.         if "%%b" leq "08" (
  31.             call :1 "%%a年\8-未羊" "%%i"
  32.         )
  33.         if "%%b" leq "09" (
  34.             call :1 "%%a年\9-申猴" "%%i"
  35.         )
  36.         if "%%b" leq "10" (
  37.             call :1 "%%a年\10-酉鸡" "%%i"
  38.         )
  39.         if "%%b" leq "11" (
  40.             call :1 "%%a年\11-戌狗" "%%i"
  41.         )
  42.         if "%%b" leq "12" (
  43.             call :1 "%%a年\12-亥猪" "%%i"
  44.         )
  45.         endlocal
  46.     )
  47. )
  48. for /f "delims=" %%i in ('dir /b /s /ad ^|sort /r') do (
  49.     rd "%%i" 2>nul
  50. )
  51. :1
  52. md "%~1" 2>nul
  53. if not exist "%~1\%~n2%m%%~x2" (
  54.     move "%~2" "%~1\%~n2%m%%~x2"
  55.     exit /b
  56. )
  57. set /a n+=1
  58. set m=_%n%
  59. goto :1
  60. exit
复制代码
十二星座
  1. @echo off
  2. cd /d "%~dp0"
  3. set "dp=%~dp0"
  4. set "dp=%dp:\=\\%"
  5. set n=1
  6. for /f "delims=" %%i in ('dir /b /s /a-d ^|find /v "%~f0" ^|findstr /rvibc:\\"%dp%[1-2][0-9][0-9][0-9]\\\\"') do (
  7.     for /f "tokens=1-2 delims=/" %%a in ("%%~ti") do (
  8.         setlocal
  9.         if "%%b" leq "01" (
  10.             call :1 "%%a 年\1-白羊座" "%%i"
  11.         )
  12.         if "%%b" leq "02" (
  13.             call :1 "%%a 年\2-金牛座" "%%i"
  14.         )
  15.         if "%%b" leq "03" (
  16.             call :1 "%%a 年\3-双子座" "%%i"
  17.         )
  18.         if "%%b" leq "04" (
  19.             call :1 "%%a 年\4-巨蟹座" "%%i"
  20.         )
  21.         if "%%b" leq "05" (
  22.             call :1 "%%a 年\5-狮子座" "%%i"
  23.         )
  24.         if "%%b" leq "06" (
  25.             call :1 "%%a 年\6-处女座" "%%i"
  26.         )
  27.         if "%%b" leq "07" (
  28.             call :1 "%%a 年\7-天秤座" "%%i"
  29.         )
  30.         if "%%b" leq "08" (
  31.             call :1 "%%a 年\8-天蝎座" "%%i"
  32.         )
  33.         if "%%b" leq "09" (
  34.             call :1 "%%a 年\9-射手座" "%%i"
  35.         )
  36.         if "%%b" leq "10" (
  37.             call :1 "%%a 年\10-摩羯座" "%%i"
  38.         )
  39.         if "%%b" leq "11" (
  40.             call :1 "%%a 年\11-水瓶座" "%%i"
  41.         )
  42.         if "%%b" leq "12" (
  43.             call :1 "%%a 年\12-双鱼座" "%%i"
  44.         )
  45.         endlocal
  46.     )
  47. )
  48. for /f "delims=" %%i in ('dir /b /s /ad ^|sort /r') do (
  49.     rd "%%i" 2>nul
  50. )
  51. :1
  52. md "%~1" 2>nul
  53. if not exist "%~1\%~n2%m%%~x2" (
  54.     move "%~2" "%~1\%~n2%m%%~x2"
  55.     exit /b
  56. )
  57. set /a n+=1
  58. set m=_%n%
  59. goto :1
  60. exit
复制代码
社会主义核心价值观【有个字论坛不让写请自己改写】
  1. @echo off
  2. cd /d "%~dp0"
  3. set "dp=%~dp0"
  4. set "dp=%dp:\=\\%"
  5. set n=1
  6. for /f "delims=" %%i in ('dir /b /s /a-d ^|find /v "%~f0" ^|findstr /rvibc:\\"%dp%[1-2][0-9][0-9][0-9]\\\\"') do (
  7.     for /f "tokens=1-2 delims=/" %%a in ("%%~ti") do (
  8.         setlocal
  9.         if "%%b" leq "01" (
  10.             call :1 "%%a年\1-富强" "%%i"
  11.         )
  12.         if "%%b" leq "02" (
  13.             call :1 "%%a年\2-**" "%%i"
  14.         )
  15.         if "%%b" leq "03" (
  16.             call :1 "%%a年\3-文明" "%%i"
  17.         )
  18.         if "%%b" leq "04" (
  19.             call :1 "%%a年\4-和谐" "%%i"
  20.         )
  21.         if "%%b" leq "05" (
  22.             call :1 "%%a年\5-自由" "%%i"
  23.         )
  24.         if "%%b" leq "06" (
  25.             call :1 "%%a年\6-平等" "%%i"
  26.         )
  27.         if "%%b" leq "07" (
  28.             call :1 "%%a年\7-公正" "%%i"
  29.         )
  30.         if "%%b" leq "08" (
  31.             call :1 "%%a年\8-法治" "%%i"
  32.         )
  33.         if "%%b" leq "09" (
  34.             call :1 "%%a年\9-爱国" "%%i"
  35.         )
  36.         if "%%b" leq "10" (
  37.             call :1 "%%a年\10-敬业" "%%i"
  38.         )
  39.         if "%%b" leq "11" (
  40.             call :1 "%%a年\11-诚信" "%%i"
  41.         )
  42.         if "%%b" leq "12" (
  43.             call :1 "%%a年\12-友善" "%%i"
  44.         )
  45.         endlocal
  46.     )
  47. )
  48. for /f "delims=" %%i in ('dir /b /s /ad ^|sort /r') do (
  49.     rd "%%i" 2>nul
  50. )
  51. :1
  52. md "%~1" 2>nul
  53. if not exist "%~1\%~n2%m%%~x2" (
  54.     move "%~2" "%~1\%~n2%m%%~x2"
  55.     exit /b
  56. )
  57. set /a n+=1
  58. set m=_%n%
  59. goto :1
  60. exit
复制代码
1

评分人数

按年份和月份
  1. @echo off
  2. cd /d "%~dp0"
  3. set "dp=%~dp0"
  4. set "dp=%dp:\=\\%"
  5. set n=1
  6. for /f "delims=" %%i in ('dir /b /s /a-d ^|find /v "%~f0" ^|findstr /rvibc:\\"%dp%[1-2][0-9][0-9][0-9]\\\\"') do (
  7.     for /f "tokens=1-2 delims=/" %%a in ("%%~ti") do (
  8.         setlocal
  9.         set "month=%%b"
  10.         call :1 "%%a\%%b 月" "%%i"
  11.         endlocal
  12.     )
  13. )
  14. for /f "delims=" %%i in ('dir /b /s /ad ^|sort /r') do (
  15.     rd "%%i" 2>nul
  16. )
  17. pause
  18. exit
  19. :1
  20. md "%~1" 2>nul
  21. if not exist "%~1\%~n2%m%%~x2" (
  22.     move "%~2" "%~1\%~n2%m%%~x2"
  23.     exit /b
  24. )
  25. set /a n+=1
  26. set m=_%n%
  27. goto :1
复制代码
按年份+上半年和下半年
  1. @echo off
  2. cd /d "%~dp0"
  3. set "dp=%~dp0"
  4. set "dp=%dp:\=\\%"
  5. set n=1
  6. for /f "delims=" %%i in ('dir /b /s /a-d ^|find /v "%~f0" ^|findstr /rvibc:\\"%dp%[1-2][0-9][0-9][0-9]\\\\"') do (
  7. for /f "tokens=1-2 delims=/" %%a in ("%%~ti") do (
  8. setlocal
  9. if "%%b" leq "06" (
  10. call :1 "%%a\上半年" "%%i"
  11. ) else (
  12. call :1 "%%a\下半年" "%%i"
  13. )
  14. endlocal
  15. )
  16. )
  17. for /f "delims=" %%i in ('dir /b /s /ad ^|sort /r') do (
  18. rd "%%i" 2>nul
  19. )
  20. pause
  21. exit
  22. :1
  23. md "%~1" 2>nul
  24. if not exist "%~1\%~n2%m%%~x2" (
  25. move "%~2" "%~1\%~n2%m%%~x2"
  26. exit /b
  27. )
  28. set /a n+=1
  29. set m=_%n%
  30. goto :1
复制代码
按 年份+上下学期
  1. @echo off
  2. cd /d "%~dp0"
  3. set "dp=%~dp0"
  4. set "dp=%dp:\=\\%"
  5. set n=1
  6. for /f "delims=" %%i in ('dir /b /s /a-d ^|find /v "%~f0" ^|findstr /rvibc:\\"%dp%[1-2][0-9][0-9][0-9]\\\\"') do (
  7. for /f "tokens=1-2 delims=/" %%a in ("%%~ti") do (
  8. setlocal
  9. if "%%b" leq "06" (
  10. call :1 "%%a\上学期" "%%i"
  11. ) else (
  12. call :1 "%%a\下学期" "%%i"
  13. )
  14. endlocal
  15. )
  16. )
  17. for /f "delims=" %%i in ('dir /b /s /ad ^|sort /r') do (
  18. rd "%%i" 2>nul
  19. )
  20. pause
  21. exit
  22. :1
  23. md "%~1" 2>nul
  24. if not exist "%~1\%~n2%m%%~x2" (
  25. move "%~2" "%~1\%~n2%m%%~x2"
  26. exit /b
  27. )
  28. set /a n+=1
  29. set m=_%n%
  30. goto :1
复制代码

TOP

多个if可以这样写,提高效率。(我刚来论坛接触bat时,还是站长教我的
  1. if "%%b" equ "01" (
  2. call :1 "%%a 年\1-白羊座" "%%i"
  3. ) else if "%%b" equ "02" (
  4. call :1 "%%a 年\2-金牛座" "%%i"
  5. )
复制代码



给一个模板,可以在6-8行自行定义。
  1. @echo off
  2. cd /d "%~dp0"
  3. set "dp=%~dp0"
  4. set "dp=%dp:\=\\%"
  5. set n=1
  6. for %%a in ("01=白羊座" "02=金牛座" "03=双子座" "04=巨蟹座" "05=狮子座" "06=处女座" "07=天秤座" "08=天蝎座" "09=射手座" "10=摩羯座" "11=水瓶座" "12=双鱼座") do (
  7. set _%%~a
  8. )
  9. for /f "delims=" %%i in ('dir /b /s /a-d ^|find /v "%~f0" ^|findstr /rvibc:\\"%dp%[1-2][0-9][0-9][0-9]\\\\"') do (
  10. for /f "tokens=1-2 delims=/" %%a in ("%%~ti") do (
  11. setlocal
  12. for /f "tokens=2 delims==" %%x in ('set _ ^|findstr "%%b"') do (
  13. call :1 "%%a\%%x" "%%i"
  14. )
  15. endlocal
  16. )
  17. )
  18. for /f "delims=" %%i in ('dir /b /s /ad ^|sort /r') do (
  19. rd "%%i" 2>nul
  20. )
  21. pause
  22. exit
  23. :1
  24. md "%~1" 2>nul
  25. if not exist "%~1\%~n2%m%%~x2" (
  26. move "%~2" "%~1\%~n2%m%%~x2"
  27. exit /b
  28. )
  29. set /a n+=1
  30. set m=_%n%
  31. goto :1
复制代码
bat小白,请多指教!谢谢!

TOP

回复 3# 77七


    学到了,里面的子程序那个妙,多个if的应用,整体极限亚索啊,相比我写的屎山代码,不管长度,我的能运行起来就阿弥陀佛

TOP

回复 3# 77七


    我之前有测试过这种if写一起的,但是我给写到了第9行开始,但是一直运行不成功闪一下就没了,我放弃了,,,就从第9行底下续上了。。。。我用%%a去变量  又试着用%%b去定义,看你里面写到前面是先用一组变量定义文件夹含义,再去获取文件修改时间+里面的变量相呼应,对比之下应该是我逻辑搞错了

TOP

返回列表