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

[文件操作] [已解决]请教批处理文件分类无法到五级问题

有上百个MP4、JPG文件,文件命名格式1~2位为项目,4~7位为类别,9~13位为姓名,15~20位为年月,21~24位为日期(如:11_0001_00001_20220102243438_0007)。姓名为一级文件夹,年月为二级文件夹,日期为三级文件夹,四级为类别文件夹,五级为项目文件夹。文件只能分类到四级类别文件夹下,不能到五级项目文件夹下,如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.MP4 *.JPG) do (
  4. set "NameStr=%%~a"
  5. if not exist "!NameStr:~ 8,5!" md "!NameStr:~ 8,5!"
  6. move "%%~a" "!NameStr:~ 8,5!\"
  7. )
  8. ren 00001 张三
  9. ren 00002 李四
  10. move 00001\* 张三
  11. move 00002\* 李四
  12. rd 00001
  13. rd 00002
  14. for /d  %%a in (*) do (
  15. pushd "%%~a"
  16. for %%a in (*.MP4 *.JPG) do (
  17. set "NameStr=%%~a"
  18. if not exist "!NameStr:~ 14,6!" md "!NameStr:~ 14,6!"
  19. move "%%~a" "!NameStr:~ 14,6!\"
  20. )
  21. popd
  22. )
  23. for /d  %%a in (*) do (
  24. pushd "%%~a"
  25. for /d  %%a in (*) do (
  26. pushd "%%~a"
  27. for %%a in (*.MP4 *.JPG) do (
  28. set "NameStr=%%~a"
  29. if not exist "!NameStr:~ 20,4!" md "!NameStr:~ 20,4!"
  30. move "%%~a" "!NameStr:~ 20,4!\"
  31. )
  32. popd
  33. )
  34. popd
  35. )
  36. for /d  %%a in (*) do (
  37. pushd "%%~a"
  38. for /d  %%a in (*) do (
  39. pushd "%%~a"
  40. for /d  %%a in (*) do (
  41. pushd "%%~a"
  42. for %%a in (*.MP4 *.JPG) do (
  43. set "NameStr=%%~a"
  44. if not exist "!NameStr:~ 3,4!" md "!NameStr:~ 3,4!"
  45. move "%%~a" "!NameStr:~ 3,4!\"
  46. )
  47. popd
  48. )
  49. popd
  50. )
  51. popd
  52. )
  53. for /d  %%a in (*) do (
  54. pushd "%%~a"
  55. for /d  %%a in (*) do (
  56. pushd "%%~a"
  57. for /d  %%a in (*) do (
  58. pushd "%%~a"
  59. for /d  %%a in (*) do (
  60. pushd "%%~a"
  61. for %%a in (*.MP4 *.JPG) do (
  62. set "NameStr=%%~a"
  63. if not exist "!NameStr:~ 0,2!" md "!NameStr:~ 0,2!"
  64. move "%%~a" "!NameStr:~ 0,2!\"
  65. )
  66. ren 11 大车
  67. ren 12 小车
  68. move 11\* 大车
  69. move 12\* 小车
  70. rd 11
  71. rd 12
  72. for /d "tokens=*"  %%a in ('dir /a:d /b') do (
  73. popd
  74. )
  75. popd
  76. )
  77. popd
  78. )
  79. popd
  80. )
  81. pause
  82. exit
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 qixiaobin0715 于 2022-1-23 11:34 编辑

你的代码好乱,没仔细看。我猜你可能是要这样:
  1. @echo off
  2. set _00001=张三
  3. set _00002=李四
  4. set _11=大车
  5. set _12=小车
  6. setlocal enabledelayedexpansion
  7. for /f "tokens=1-5 delims=_" %%a in ('dir /b /a-d *.MP4 *.JPG') do (
  8.     set str=%%d
  9.     set yy=!str:~,6!
  10.     set dd=!str:~7,4!
  11.     if not exist "!_%%c!\!yy!\!dd!\%%b\!_%%a!" md "!_%%c!\!yy!\!dd!\%%b\!_%%a!"
  12.     move "%%a_%%b_%%c_%%d_%%e"  "!_%%c!\!yy!\!dd!\%%b\!_%%a!"
  13. )
  14. pause
复制代码
1

评分人数

TOP

本帖最后由 qixiaobin0715 于 2022-1-23 11:44 编辑

回复 1# hztyf_21558
设置日期段时有笔误,已修改。(set dd那一行)
1

评分人数

TOP

回复 3# qixiaobin0715
问题已解决,非常感谢!受益匪浅。

TOP

返回列表