【问题标题】:Relative path in Batch File using %~dp0使用 %~dp0 的批处理文件中的相对路径
【发布时间】:2014-08-05 00:32:39
【问题描述】:

以下是在批处理文件中引用相对路径的正确方法吗:

if "%1" == "cd" ( 
pushd %~dp0
cd/
cd "C:\Program Files (x86)\Telerik\Test Studio\Bin"
ArtOfTest.Runner.exe list= "%~dp0TestListsCommunicator.aiilist" root="%~dp0"   settings="%~dp0SettingsForCD.xml"
popd
)

运行此批处理文件时出现错误。如果这不是正确的方法,请建议正确的方法。谢谢!

显示的错误是

Error: unrecognized or incomplete command line.
Unsupported argument ''! 

【问题讨论】:

    标签: shell batch-file cmd


    【解决方案1】:

    ArtOfTest.Runner.exe 正在产生该错误。

    尝试将ArtOfTest.Runner.exe 替换为echo( 以准确查看正在传递的参数。

    我怀疑list= 后面的空格可能是您的问题,但我不知道ArtOfTest.Runner.exe 是什么或它期望什么。

    【讨论】:

    • 原来是空间导致了错误,而且我修改了根目录。它应该是 root="%~dp0\" 指向正确的文件夹。休息很好。 ArtOfTest.Runner 是一个 Telerik 测试工作室产品,用于测试 UI 相关组件。 exe的参数正确且到位。代码pushd%~dp0 & popd的意义你知道吗?在 SO 中看到一个相关问题的答案。在互联网上研究后找不到正确的例子,所以我想自己提出来。
    • PUSHD` 将当前目录推送到CMD 的堆栈并切换到参数中的目标目录。 POPD 从堆栈中恢复先前的目录。 %~dp0 表示来自%0 的驱动器(d) 和路径(p)。 ~ 删除引号。 %0 是批处理的第 0 个参数,即批处理名称本身。
    • 所以我猜推到这里,对我来说没用,不需要切换到目标目录。我正在使用 cd 手动设置 artOfTest.runner.exe 的路径。对吗?
    • 是的。我在~ 的描述中包含了一个小错误。需要指出d,p(或n代表名称,x代表扩展名)是子字段要求。
    猜你喜欢
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2014-01-15
    • 2011-05-18
    • 1970-01-01
    • 2014-08-03
    • 2022-01-20
    相关资源
    最近更新 更多