我无法解决这个问题。
我有一堆名称格式的文件:" PREFIX_PREFIX2_filename.pdf"
我想将它们分类到这样的文件夹中:" PREFIX / PREFIX2 /(files)"
这是我到目前为止所做的:
setlocal enableextensions disabledelayedexpansion
for %%f in (*_*_*.pdf, *_*_*.png) do (
for /f "tokens=1, 2 delims=_" %%p in ("%%~nf") do (
for %%d in ("%%~dpf.") do if /i not "%%~p"=="%%~nd" (
if not exist "%%~dpf\%%~p" md "%%~dpf\%%~p"
if not exist "%%~dpf\%%~p" md "%%~dpf\%%~p"
move "%%~ff" "%%~dpf\%%~p"
)
)
)
这是根据第一个前缀对它们进行排序,但我无法进一步说明,老实说,我甚至不确定这里到底发生了什么。这种CMD语言给我带来了我见过的最丑陋,最难以理解的东西。
我已经阅读过一些类似的问题,但仍然无法解决。
如果有人能告诉我如何完成这项相对简单的任务并向我解释这里到底发生了什么,我将非常感激。
答案 0 :(得分:1)
这种方法更简单:
setlocal
for /F "tokens=1,2* delims=_" %%a in ('dir /B *_*_*.pdf *_*_*.png') do (
if not exist "%%a" md "%%a"
if not exist "%%a\%%b" md "%%a\%%b"
move "%%a_%%b_%%c" "%%a\%%b\%%c"
)
即:dir /B *_*_*.pdf
命令生成PREFIX_PREFIX2_filename.pdf
格式的名称列表。 for /F "tokens=1,2* delims=_" %%a
以这种方式将这些名称划分为3个令牌:%%a=PREFIX
,%%b=PREFIX2
和%%c=filename.pdf
。其余的很明显......
PS - 我建议您将标题中的sort
字词更改为move
。第一个术语提出了完全不同的任务......