【发布时间】:2015-05-17 19:35:13
【问题描述】:
我就是想不通。
我有一堆名称格式为:“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 语言给我带来了我所见过的最丑陋和不可思议的东西。
我已经阅读了一堆类似的问题,但仍然无法解决。
如果有人能告诉我如何完成这个肯定相对简单的任务,并向我解释这里到底发生了什么,我将不胜感激。
【问题讨论】:
-
for %f in (*_*_*.*) do @for /f "tokens=1,2* delims=_" %p in ("%~nf") do @echo %~ff %~dpf%p\%q\%r%~xf从命令行运行上一个示例,可能会有所帮助。要在批处理脚本中使用,请将所有%符号加倍。恕我直言,你的路很好......
标签: batch-file cmd directory