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

批处理文件读取文本行批量替换变量创建目录的问题

解决批处理循环读取文本创建文件夹的问题

你已经找对了核心思路,但问题出在循环变量的作用范围和路径引号的错误使用上。批处理的for循环变量%%a只能在循环体的括号内部生效,你之前把创建文件夹的代码放在了循环外面,这时候%%a已经失效,自然会出现名称错误的问题。另外,你原来的路径写法里引号位置混乱,也会导致文件夹名称异常。

下面是修正后的完整代码,直接替换你原来的脚本即可:

@echo off
SET "filesNOTES=Files\Notes"
SET "rootPATH=G:\My Drive\Company\Projects\Project1\Project1-1\Project1-1-1\Workflow\Generic Content"

:: 循环读取ProductList.txt的每一行,作为父文件夹名称
for /f "delims=" %%a in (ProductList.txt) do (
    :: 创建父文件夹
    mkdir "%%a"
    
    :: 创建各级子文件夹
    mkdir "%%a\Content"
    mkdir "%%a\Files\Final Deliverables"
    mkdir "%%a\Files\Illustrator Files"
    mkdir "%%a\%filesNOTES%"
    mkdir "%%a\Files\Working PDFs"
    mkdir "%%a\Product Photos\Finals"
    mkdir "%%a\Product Photos\PSDs"

    :: 生成FontInfo.txt并写入内容
    echo %%a>"%%a\%filesNOTES%\FontInfo.txt"
    type "%rootPATH%\FontInfo.txt">>"%%a\%filesNOTES%\FontInfo.txt"

    :: 生成Mockup Notes.txt并写入内容
    echo %%a>"%%a\%filesNOTES%\Mockup Notes.txt"
)

关键修改点说明:

  • 循环范围调整:把所有创建文件夹和写入文件的操作都放到do (...)的括号内部,这样每次循环都能正确使用当前行的%%a作为父文件夹名称。
  • 引号规范使用:所有路径都用双引号括起来(比如"%%a\Files\Final Deliverables"),避免路径中的空格导致命令解析错误;定义变量时也用SET "变量名=值"的格式,防止意外的空格干扰变量值。
  • 冗余代码移除:你原来的代码里重复执行了mkdir %directoryNAME%\Files\Notes,我已经去掉了重复的部分。
  • echo命令优化:把echo > 文件和echo 内容> 文件合并成一行,简化代码逻辑,避免多余的空行。

这样运行脚本后,就会自动读取ProductList.txt里的每一行名称,依次创建对应的父文件夹和子文件夹结构了。

内容的提问来源于stack exchange,提问作者Austin Duncan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:37:08