我有一个类似的命令
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
请确保您输入的名称正确无误,然后重试
什么是使它正常工作的正确命令?
答案 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
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?