批处理命令中使用目录变量报错求助:无法正确使用循环变量%%G
批处理脚本错误修正
你的脚本报错核心原因有两点:
- 路径拼接错误:
%%~nG只提取了目录名称,而非完整绝对路径,导致if exists判断的是当前工作目录下的子目录,不是你遍历到的MP*目录下的目标子目录。 - 拼写错误:
DirecotoryPortal应为DirectoryPortal(缺失字母r),这会导致即使目标目录存在也无法匹配。
修正后的脚本:
for /D %%G in ("C:\CI\workspace\MP*") do ( if exist "%%~G\DirectoryPortal\" ( echo DirectoryPortal exists in "%%~G" cd "%%~G\DirectoryPortal" # 在这里添加你需要在该目录下执行的命令 cd /d "%~dp0" # 可选:回到脚本原始目录,避免后续命令路径混乱 ) )
关键说明:
%%~G:去掉%%G自带的引号,获取遍历到的MP*目录的完整绝对路径(例如C:\CI\workspace\MP_Project)。- 拼接
\DirectoryPortal\后形成完整子目录路径,if exist可准确判断该目录是否存在。 - 使用完整路径执行
cd命令,避免因当前工作目录变化导致跳转错误。 - 可选的
cd /d "%~dp0"能让脚本执行完子目录操作后回到初始目录,防止后续命令路径混乱。
内容的提问来源于stack exchange,提问作者PsCraft
相关产品推荐
相关产品推荐

