You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows CMD中自动将文件移动到部分名称匹配的文件夹

如何在Windows CMD中自动将文件移动到部分名称匹配的文件夹

我来帮你搞定这个自动归类文件的需求!你想要把文件名以数字开头的文件,自动移动到以文件名前三位数字命名的文件夹里——比如把29100.txt移到\291文件夹、30011.ppt移到\300文件夹对吧?

先明确你的需求场景:你有这些待处理的文件:

  • 29100.txt
  • 29103.doc
  • 30011.ppt
  • 30013.txt
  • 40100.xls

原本你考虑过先按每个文件名单独建文件夹再移动,后来简化成直接一步到位移到前三位数字的公共文件夹里,最终你找到的这个批处理脚本确实能完美解决问题,我来给你拆解下它的作用,方便你理解:

最终可用的批处理脚本

@echo off
for /f "delims=" %%F in (
    'Dir /b *.*^|findstr "^[0-9]" '
) do call :subr "%%F"
exit /b

:subr
set "file=%~n1"
set "fold=%file:~0,3%"
if not exist "%fold%" md "%fold%"
move %1 "%fold%"
exit /b

脚本各部分简单解释

  • @echo off:关闭命令行的命令回显,让窗口只显示执行结果,界面更干净。
  • for /f "delims=" %%F in ('Dir /b *.*^|findstr "^[0-9]" '):
    • Dir /b *.*:列出当前目录下所有文件的纯文件名(不带路径、大小等额外信息)。
    • findstr "^[0-9]":过滤出以数字开头的文件,避免误处理非目标文件。
    • for /f:把前面命令输出的每个文件名,依次赋值给变量%%F,逐个处理。
  • call :subr "%%F":调用后面的:subr子流程,把当前文件名传进去单独处理。
  • exit /b:主流程执行完后直接退出,避免后续子流程被重复触发。

子流程:subr的具体操作

  • set "file=%~n1":提取传入文件的纯文件名(不含扩展名),比如把"29100.txt"变成"29100"。
  • set "fold=%file:~0,3%":截取纯文件名的前3个字符,作为目标文件夹的名称,比如"29100"变成"291"。
  • if not exist "%fold%" md "%fold%":检查目标文件夹是否存在,如果不存在就自动创建它。
  • move %1 "%fold%":把当前文件移动到目标文件夹里。
  • exit /b:子流程执行完后返回主流程,继续处理下一个文件。

这个脚本完全符合你的需求,直接保存成.bat文件,放在你要处理文件的目录里双击运行就可以啦!

备注:内容来源于stack exchange,提问作者Novice_Extremely

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:49:09