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

批处理FOR /d循环仅运行一次故障 拷贝@前缀文件夹Keys内文件需求

故障原因排查
  • 变量定义格式错误:set modsPath="C:\Exemple"的写法会将引号一起存入变量,后续路径拼接时会出现双引号嵌套,导致路径识别失败
  • for代码块内使用::注释存在兼容性问题,容易引发语法解析异常,批处理代码块内应优先使用rem做注释
  • 若启用注释掉的cd命令,会改变当前工作目录,第一次循环切换路径后,后续循环无法在新路径下找到其余@开头的文件夹,直接导致遍历中断
  • %cd%为预处理变量,会在for块执行前被替换为脚本启动时的工作目录,运行过程中不会动态更新,若工作目录发生变化会直接导致路径拼接错误
  • 未提前判断目标keys文件夹是否存在,若目标路径不存在会触发拷贝报错
正确实现方案

以下脚本直接放在Main目录下运行即可,自动识别脚本所在路径,无需手动写死目录:

@echo off
setlocal enabledelayedexpansion
rem 取脚本所在目录作为根目录
set "modsPath=%~dp0"
set "keysPath=%modsPath%keys"

rem 目标目录不存在则自动创建
if not exist "%keysPath%" mkdir "%keysPath%"

rem 遍历所有@开头的文件夹
for /d %%i in ("%modsPath%@*") do (
    echo 处理文件夹:%%~ni
    rem 直接拷贝目标后缀文件,若要拷贝示例的txt把.bikey替换为.txt即可
    copy /y "%%i\keys\*.bikey" "%keysPath%\"
)

echo 全部文件拷贝完成
pause>nul
exit

如果你确实需要进入子目录执行操作,可使用pushd+popd配对操作,不会破坏全局工作目录,改造后的循环逻辑如下:

for /d %%i in ("%modsPath%@*") do (
    echo 处理文件夹:%%~ni
    pushd "%%i\keys"
    copy /y *.bikey "%keysPath%\"
    popd
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:27:03