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

由于所提的要求规律性不强,下面代码和你的要求存在细微差异(文件夹名两个横杠只能用一个横杠代替;实现合并文件与精简代码矛盾,又会产生一堆代码):
未经测试
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%x in (*) do (
  4.     pushd %%x
  5.     for %%i in (*) do (
  6.         set str=%%i
  7.         if "!str!"=="!str:_x=!" (
  8.             for /f "tokens=4 delims=-" %%a in ("%%i") do (
  9.                 if not exist "%%a" md "%%a"
  10.                 move "%%i" "%%a"
  11.             )
  12.         ) else (
  13.             for /f "tokens=4,5 delims=-" %%a in ("%%i") do (
  14.                 set y=%%b
  15.                 if not exist "%%a-!y:~,-1!" md "%%a-!y:~,-1!"
  16.                 move "%%i" "%%a-!y:~,-1!"
  17.             )
  18.         )
  19.     )
  20. popd
  21. )
  22. pause
复制代码

TOP

严重同意!!!

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%x in (*) do (
  4.     pushd %%x
  5.     for %%i in (*) do (
  6.         set str=%%i
  7.         if "!str!"=="!str:_x=!" (
  8.             for /f "tokens=4 delims=-" %%a in ("%%i") do (
  9.                 if not exist "%%a" md "%%a"
  10.                 move "%%i" "%%a"
  11.             )
  12.         ) else (
  13.             for /f "tokens=4,5,6 delims=-" %%a in ("%%i") do (
  14.                 echo,%%a|findstr /v /be [0-9][0-9]*>nul&&(set "str1=%%a"&set "str2=%%b")||(set "str1=%%b"&set "str2=%%c")
  15.                 if not exist "!str1!-!str2:~,-1!" md "!str1!-!str2:~,-1!"
  16.                 move "%%i" "!str1!-!str2:~,-1!"
  17.             )
  18.         )
  19.     )
  20. popd
  21. )
  22. pause
复制代码
回复 3# feixiang8209

TOP

回复 7# feixiang8209
你所说的文件夹合并,没看出什么规律来,写代码需要规则的。像这种情况手动合并即可。

TOP

本帖最后由 qixiaobin0715 于 2021-4-6 14:49 编辑

回复 9# feixiang8209
思路都给你搞乱了,就这样了,应当还能精简,按正常思路顺序写的,凑合用吧。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (*) do (
  4.     pushd %%i
  5.     for %%j in (*) do (
  6.         for /f "tokens=4,5,6,7 delims=-" %%a in ("%%j") do (
  7.             set "x=%%d"&set "x=!x:~-3!"
  8.             set "x1=%%a"&set "x2=%%b"&set "x3=%%c"
  9.             if "!x!"=="DPI" (
  10.                 if "!x3!"=="OneSize" (
  11.                     if not exist "!x2!" md "!x2!"
  12.                     move "%%j" "!x2!"
  13.                 ) else if "!x3:~-4!"=="inch" (
  14.                     if not exist "!x3!" md "!x3!"
  15.                     move "%%j" "!x3!"
  16.                 ) else (
  17.                     if not exist "!x2!-!x3!" md "!x2!-!x3!"
  18.                     move "%%j" "!x2!-!x3!"
  19.                 )
  20.             ) else (
  21.                 if "!x2!"=="OneSize" (
  22.                     if not exist "!x1!" md "!x1!"
  23.                     move "%%j" "!x1!"
  24.                 ) else if "!x2:~-4!"=="inch" (
  25.                     if not exist "!x2!" md "!x2!"
  26.                     move "%%j" "!x2!"
  27.                 ) else (
  28.                     if not exist "!x1!-!x2!" md "!x1!-!x2!"
  29.                     move "%%j" "!x1!-!x2!"
  30.                 )
  31.             )
  32.         )
  33.     )
  34. popd
  35. )
  36. pause
复制代码

TOP

精简后:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (*) do (
  4.     pushd %%i
  5.     for %%j in (*) do (
  6.         for /f "tokens=4,5,6,7 delims=-" %%a in ("%%j") do (
  7.             set "x=%%d"&set "x=!x:~-3!"
  8.             if "!x!"=="DPI" (
  9.                 set "x1=%%b"&set "x2=%%c"
  10.             ) else (
  11.                 set "x1=%%a"&set "x2=%%b"
  12.             )
  13.             if "!x2!"=="OneSize" (
  14.                 if not exist "!x1!" md "!x1!"
  15.                 move "%%j" "!x1!"
  16.             ) else if "!x2:~-4!"=="inch" (
  17.                 if not exist "!x2!" md "!x2!"
  18.                 move "%%j" "!x2!"
  19.             ) else (
  20.                 if not exist "!x1!-!x2!" md "!x1!-!x2!"
  21.                 move "%%j" "!x1!-!x2!"
  22.             )
  23.         )
  24.     )
  25. popd
  26. )
  27. pause
复制代码

TOP

本帖最后由 qixiaobin0715 于 2021-4-7 17:33 编辑

回复 12# feixiang8209
合并文件夹,代码就要增加不少。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (*) do (
  4.     pushd %%i
  5.     for %%j in (*) do (
  6.         for /f "tokens=4,5,6,7 delims=-" %%a in ("%%j") do (
  7.             set "x=%%d"&set "x=!x:~-3!"
  8.             if "!x!"=="DPI" (
  9.                 set "x1=%%b"&set "x2=%%c"
  10.             ) else (
  11.                 set "x1=%%a"&set "x2=%%b"
  12.             )
  13.             if "!x2!"=="OneSize" (
  14.                 if "!x1!"=="D8050" (
  15.                     if not exist "D8050-D8051" md "D8050-D8051"
  16.                     move "%%j" "D8050-D8051"
  17.                 ) else if "!x1!"=="D8051" (
  18.                     if not exist "D8050-D8051" md "D8050-D8051"
  19.                     move "%%j" "D8050-D8051"
  20.                 ) else if "!x1!"=="ZY1370" (
  21.                     if not exist "ZY1370-ZY003-S" md "ZY1370-ZY003-S"
  22.                     move "%%j" "ZY1370-ZY003-S"
  23.                 ) else (
  24.                     if not exist "!x1!" md "!x1!"
  25.                     move "%%j" "!x1!"
  26.                 )
  27.             ) else if "!x2:~-4!"=="inch" (
  28.                 if not exist "!x2!" md "!x2!"
  29.                 move "%%j" "!x2!"
  30.             ) else (
  31.                 if "!x1!-!x2!"=="ZY003-S" (
  32.                     if not exist "ZY1370-ZY003-S" md "ZY1370-ZY003-S"
  33.                     move "%%j" "ZY1370-ZY003-S"
  34.                 ) else (
  35.                     if "!x2:~-1!"=="_" set "x2=!x2:~0,-1!"
  36.                     if not exist "!x1!-!x2!" md "!x1!-!x2!"
  37.                     move "%%j" "!x1!-!x2!"
  38.                 )
  39.             )
  40.         )
  41.     )
  42. popd
  43. )
  44. pause
复制代码

TOP

返回列表