无法在带有空格的bat文件中启动命令

时间:2019-02-19 15:00:05

标签: java windows batch-file

我有一个类似的命令

D:\ab cd\jre\bin\javaw -jar path_to_my_jar

我希望能够在bat文件中执行此命令,因此我首先在命令行上对其进行了测试,例如

start "test" "D:\ab cd\jre\bin\javaw -jar path_to_my_jar"

但是它让我犯了一个错误:

  

Windows找不到D:\ ab cd \ jre \ bin \ javaw -jar path_to_my_jar
  请确保您输入的名称正确无误,然后重试

什么是使它正常工作的正确命令?

3 个答案:

答案 0 :(得分:3)

当路径包含空格时,必须将其用引号引起来。但是,您只需要包装路径本身,而不必包装发送的参数(否则Windows会将参数视为路径的一部分。)

start "test" "D:\ab cd\jre\bin\javaw" -jar path_to_my_jar

答案 1 :(得分:2)

有两种方法可以做到这一点:

start "test" "D:\ab cd\jre\bin\javaw" -jar path_to_my_jar

还提到了herehere甚至:

start "test" D:\ab cd\jre\bin\javaw -jar path_to_my_jar

,如果路径中不包含空格,它也可以正常工作。在您的问题中,它将无法正常工作。

命令不起作用的原因是系统认为您要打开完整路径为D:\ab cd\jre\bin\javaw -jar path_to_my_jar的文件。

有关详细信息,请参见cmd中的start /?

答案 2 :(得分:2)

正如我最初评论的那样,这将起作用:

start "test" "D:\ab cd\jre\bin\javaw" -jar "path_to_my_jar"  

但是我建议对此进行更改以消除歧义(潜在危险):

start "title" "D:\ab cd\jre\bin\javaw.exe" -jar "path_to_my_jar"

如果您经常这样做,建议您将D:\ab cd\jre\bin\添加到PATH变量中,
然后您就可以start "title" javaw ...了。

内部必须带有空格的路径。
另一方面,用双引号括起来的东西被视为一个整体。

正如Klitos Kyriacou在对double-beep's answer的评论中所说,在这种情况下,start "test"部分是可选的,似乎是多余的,您只需"path\to\javaw.exe" -jar "path_to_my_jar"
但是,我不建议您删除它。由于知道哪个exe不会等待以及哪个会等待并不直观,因此最好继续使用start对其进行直观控制。
start ""不会暂停当前的批处理/ cmd等待,但是start /wait会等待。
相关问题:
How does the command prompt know when to wait for exit?