夜雨聆风学习资料网

ARTICLE · 1042777

按文件名前缀把 PDF 移入对应文件夹

按文件名前缀把 PDF 移入对应文件夹

01

【问题】

一批 PDF 的文件名由多段连字符组成,希望按前四段建立文件夹,并把每个文件移入对应目录,避免相似前缀互相误匹配。

02

【解决代码】

@echo offcd /d "%~dp0"for /f "delims=" %%i in ('dir /b /a-d "*-*-*-*.pdf"'do (        for /f "tokens=1-4 delims=-" %%a in ("%%~ni"do (                if not exist "%%a-%%b-%%c-%%d\" (                        md "%%a-%%b-%%c-%%d\"                )                move "%%i" "%%a-%%b-%%c-%%d\"        ))pause

“tips:  使用时要小心,请备份好源文件,万一不小心,引起不可挽回的损失

03

【代码解析】

原思路用通配符一次移动一组文件,容易把 1、10、100 这类相似前缀混在一起。改进方法是逐个文件处理,每次只移动当前枚举到的那个文件。

1. 固定工作目录

cd /d "%~dp0" 把当前目录切换到脚本所在位置,/d 允许同时切换盘符。

2. 逐个枚举 PDF

外层 dir /b /a-d 只列文件;delims= 让完整文件名进入 %%i。

3. 拆分文件名

%%~ni 表示去掉扩展名后的文件名,内层 for 按连字符切出前四段 %%a 到 %%d。

4. 创建并移动

if not exist 先判断目录,md 创建后,move "%%i" 只移动当前文件,因此不会误伤其他相似前缀。

初学者使用步骤

1. 先复制少量 PDF 到测试目录。

2. 确认文件名至少包含四个连字符分段。

3. 运行后检查生成目录和文件归属。

4. 确认无误后再用于完整文件集。

注意事项

• move 会改变原目录结构,操作前要备份。

• 如果名称中的前四段本身含额外连字符,分组规则需要重写。

• 目标目录已有同名文件时可能发生冲突。

相关学习资料