双引号不适用于从命令提示符调用带空格的文件夹

时间:2016-01-17 12:39:11

标签: batch-file testng

我正在尝试创建一个bat文件,以便从命令提示符运行testng。问题是我的路径包含许多名称中包含空格的文件夹。我按照How to write a full path in a batch file having a folder name with space?中提到的步骤进行了操作,并为名称中包含空格的文件夹添加了双引号,但问题是应用程序还在考虑带引号的文件夹名称,因此无法找到给定的文件夹。

这是我的命令。

set ProjectPath="C:\Test\ABC Online"    
echo %ProjectPath%
set classpath=%ProjectPath%\bin;%ProjectPath%\Framework Jar Files\*
echo %classpath%
java org.testng.TestNG %ProjectPath%\testng.xml

但每次都会收到错误“错误:找不到或加载主类org.testng.TestNG”。在上面的代码中,当我回显Projectpath时,我得到的是这样的东西。

 "C:\Test\ABC Online" (Double quotes)

如果我将文件夹名称更改为ABC_Online并运行不带双引号的相同命令,则它可以正常工作。

我错过了什么。请建议。

1 个答案:

答案 0 :(得分:2)

set命令行中,引号是值的一部分,命令行中有尾随空格:

set ProjectPath="C:\Test\ABC Online" SPACE SPACE SPACE SPACE

因此命令行java org.testng.TestNG "%ProjectPath%\testng.xml"扩展为:

java org.testng.TestNG "C:\Test\ABC Online"    \testng.xml

使用以下语法,以便空格和引号不会成为变量值的一部分:

set "ProjectPath=C:\Test\ABC Online"

稍后使用该值时,请输入如下引号:

java org.testng.TestNG "%ProjectPath%\testng.xml"