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

如何用Windows批处理按文件名片段创建文件夹并移动重命名文件

批量整理GML脚本文件:按对象名创建文件夹并重命名文件

我有一批文件名格式如下的文件:
gml_Object_obj_A_Script_0.txt
gml_Object_obj_B_Script_1.txt

其中obj_A、obj_B是对象名称,Script_0、Script_1是文件名称。需要编写Windows批处理文件,实现:

  • 根据对象名称创建对应文件夹
  • 将文件移动到对应文件夹,并完成重命名

示例执行后需达到的效果:

  • 生成文件夹obj_A,包含文件Script_0.txt
  • 生成文件夹obj_B,包含文件Script_1.txt

我的错误尝试

我编写了以下批处理代码,但无法正常工作:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "SourceDir=E:\TestBatch"
set "DestDir=E:\TestBatch"

for /F "eol=| delims=" %%A in ('dir /B /A-D-H "%SourceDir%\gml_Object_obj_*" 2^>nul') do (
    for /F "eol=| tokens=2 delims=_" %%B in ("%%~nA") do (
        md "%DestDir%\%%B" 2>nul
        set "FileName=%%A"
        call move /Y "%SourceDir%\%%A" "%DestDir%\%%B\%%FileName:~3%%"
    )
)
endlocal

执行后得到错误结果:
生成了一个名为Object的文件夹,里面包含两个文件:
_Object_obj_A_Script_0.txt
_Object_obj_B_Script_1.txt


修正后的解决方案

可用的批处理代码

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "SourceDir=E:\TestBatch"
set "DestDir=E:\TestBatch"

for /F "eol=| delims=" %%A in ('dir /B /A-D-H "%SourceDir%\gml_Object_obj_*" 2^>nul') do (
    set "FileName=%%~nA"
    :: 提取对象名称(obj_A/obj_B)
    for /F "tokens=3 delims=_" %%B in ("!FileName!") do (
        set "ObjName=obj_%%B"
    )
    :: 提取脚本名称(Script_0/Script_1)
    for /F "tokens=4,5 delims=_" %%C in ("!FileName!") do (
        set "ScriptName=%%C_%%D"
    )
    :: 创建目标文件夹,已存在则忽略错误
    md "%DestDir%\!ObjName!" 2>nul
    :: 移动文件并重命名
    move /Y "%SourceDir%\%%A" "%DestDir%\!ObjName!\!ScriptName!.txt"
)
endlocal

代码关键说明

  1. 启用延迟变量展开:添加EnableDelayedExpansion,解决循环内部变量无法实时读取的问题,用!变量名!替代%变量名%读取循环内修改的变量
  2. 文件名拆分逻辑:
    • 按下划线_分割文件名,第3个token是对象标识(A/B),拼接成完整对象名obj_A/obj_B
    • 第4、5个token组合成脚本名称Script_0/Script_1
  3. 文件夹创建与文件移动:
    • md ... 2>nul:创建文件夹时屏蔽已存在的错误提示
    • move /Y:强制覆盖目标文件夹内的同名文件(若存在)

内容的提问来源于stack exchange,提问作者Duy Hoang Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:17:11