.BAT 文件按文件名将文件移动到文件夹和子文件夹中...无法使子文件夹工作
.BAT file to move files into folders and subfolders by filename... can't get subfolders to work
我就是想不通。
我有一堆名称格式的文件:"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 语言对我来说是我见过的最丑陋和最神秘的东西。
我已经阅读了一堆类似的问题,但仍然无法解决。
如果有人能告诉我如何完成这个相对简单的任务,并向我解释这里到底发生了什么,我将不胜感激。
这个方法比较简单:
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
。第一项给出了完全不同的任务的想法...
我就是想不通。
我有一堆名称格式的文件:"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 语言对我来说是我见过的最丑陋和最神秘的东西。
我已经阅读了一堆类似的问题,但仍然无法解决。
如果有人能告诉我如何完成这个相对简单的任务,并向我解释这里到底发生了什么,我将不胜感激。
这个方法比较简单:
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
。第一项给出了完全不同的任务的想法...