返回列表 发帖
本帖最后由 aloha20200628 于 2024-8-4 17:35 编辑

回复 5# liaoguinan

以下代码存为test.bat,置于 1000-0005,1000-0006 文件夹所在目录下运行...
假设目标文件名 *.jpg 最后一个数值字段的值域=0-99。
  1. @echo off &for /d %%d in (*) do (
  2. pushd "%%d"
  3. for /f "delims=" %%F in ('dir /b/s/a-d *.jpg') do (
  4. set "s=%%~nF" &setlocal enabledelayedexpansion
  5. for %%e in ("!s:-=\!") do (set "e1=%%~nxe")
  6. if !e1! leq 9 (set "s=!s:~0,-2!") else (set "s=!s:~0,-3!")
  7. for %%e in ("!s:-=\!") do (set "e2=%%~nxe")
  8. if !e1! geq 61 if !e1! leq 69 (set "dF=%%~nxd-小明") else if !e1! equ 99 (set "dF=%%~nxd-小白")
  9. if not defined dF (set "dF=%%~nxd-!e2!")
  10. if not exist "!dF!" md "!dF!"
  11. 2>nul move /y "%%F" "!dF!\" &endlocal
  12. )
  13. popd
  14. )
  15. pause&exit/b
复制代码
1

评分人数

TOP

回复 7# liaoguinan

6楼代码已订正,再试试吧...

TOP

本帖最后由 aloha20200628 于 2024-8-5 14:44 编辑


     6楼代码进一步优化如下 》无论文件名包含多少个被分隔的字段,总可顺序提取最后1-2个字段,同时去除了匹配最后一个数字编号字段的位数限制,从而能够自适应文件数量较多的实况
     正好用本帖题型操练一把 ‘纯P方法反向顺序提取字符串被分隔的字段’ ...
  1. @echo off &for /d %%d in (*) do (
  2. pushd "%%d"
  3. for /f "delims=" %%F in ('dir /b/s/a-d *.jpg') do (
  4. set "s=\x\%%~nF" &setlocal enabledelayedexpansion
  5. for %%e in ("!s:-=\!") do (set "e1=%%~nxe"&set "s=%%~pe")
  6. for %%e in ("!s:~0,-1!") do set "e2=%%~nxe"
  7. if !e1! geq 61 if !e1! leq 69 (set "dF=%%~nxd-小明") else if !e1! equ 99 (set "dF=%%~nxd-小白")
  8. if not defined dF (set "dF=%%~nxd-!e2!")
  9. if not exist "!dF!" md "!dF!"
  10. 2>nul move /y "%%F" "!dF!\" &endlocal
  11. )
  12. popd
  13. )
  14. pause&exit/b
复制代码

TOP

返回列表