Batch脚本当前路径向上跳转一级目录的语法问题求助
Batch脚本相对路径跳转报错解决方案
问题原因
直接拼接..生成的路径只是字符串层面的拼接,Windows Batch不会自动将路径中的相对标识解析为标准绝对路径,部分命令无法识别带..的路径格式,就会抛出找不到路径的错误。
解决方案
方案1:使用for命令扩展解析绝对路径(推荐)
Batch的for命令参数扩展可以直接将带相对标识的路径转为标准绝对路径,修改代码如下:
:: 原有代码保留 for %%i in (.) do set CURRENT_PATH=%%~fi set PROJECT_REL=%CURRENT_PATH% :: 解析上一级目录的绝对路径 for %%i in ("%PROJECT_REL%\..") do set GUI_ROOT=%%~fi set PROJECT_ROOT=%GUI_ROOT% set JAVA_HOME=%GCTI_JDK_1_8_0% if ("%JAVA_HOME%")==() goto invalid_java_home :: 拼接构建文件路径 set BUILDFILE="%GUI_ROOT%\build\build_brgui.xml"
此时%BUILDFILE%输出的就是预期的C:\Users\myname\gr\firstClone\gr\src\gui\build\build_brgui.xml标准路径。
方案2:使用pushd/popd切换目录获取路径
也可以通过临时切换目录的方式获取上一级路径:
:: 原有代码保留 for %%i in (.) do set CURRENT_PATH=%%~fi set PROJECT_REL=%CURRENT_PATH% :: 临时切换到上一级目录获取路径,随后切回原目录 pushd "%PROJECT_REL%\.." set GUI_ROOT=%cd% popd set PROJECT_ROOT=%GUI_ROOT% :: 拼接构建文件路径 set BUILDFILE="%GUI_ROOT%\build\build_brgui.xml"
补充说明
如果调整后仍提示路径不存在,可先添加一行调试代码输出解析后的路径,确认路径是否符合预期:echo %BUILDFILE%
同时确认C:\Users\myname\gr\firstClone\gr\src\gui\build\build_brgui.xml文件实际存在。
内容的提问来源于stack exchange,提问作者Priya
相关产品推荐
相关产品推荐

