我正在尝试启动一个Java进程,使用bat文件将几个参数传递给它。但是问题在于,使用以下命令时,cmd仅会跳转而不显示任何内容:
start cmd/C
因此使其成为
start cmd/K
给出一个显示该错误的弹出cmd
'C:\ New'不被识别为内部或外部命令,可操作程序或批处理文件。
出于测试目的以重现问题,您可以通过以下示例启动Java进程。
我已经在寻找解决方案,但是唯一类似于该问题的方法是使用set,然后再使用该参数。 设置“ var = content”
回显正确地打印出包含许多空格的文件夹,例如:“ C:\ New Folder and Spaces”
代码如下:
SET "currDir=%~dp0"
echo %currDir%
start cmd /K "%currDir%"..\jvm\jre\bin\java.exe -version
如何在其中包含空格的情况下传递〜dp0 值而又不会出现上述错误?如果我应该在启动命令中多次使用它,该怎么办?
start cmd /K "%currDir%"..\jvm\jre\bin\java.exe -version -Djava.awt.headless=true %JAVA_OPTIONS% -jar "%~dp0MyJar.jar" -home "%~dp0.." %*
答案 0 :(得分:0)
为什么不使用%~dp0%
和使用引号引起来的附件?
set currDir=%~dp0
echo "%currDir%"
"%~dp0%..\jvm\jre\bin\java.exe" -version
或
set currDir=%~dp0
echo "%currDir%" & "%~dp0%..\jvm\jre\bin\java.exe" -version
timeout /t -1
就像您在此部分中使用的一样:: “%〜dp0MyJar.jar” ::
start cmd /K "%currDir%..\jvm\jre\bin\java.exe" -version -Djava.awt.headless=true %JAVA_OPTIONS% -jar "%~dp0MyJar.jar" -home "%~dp0.." %*
此外,如果要设置some =一些字符串,其值后有空格,则空格将是字符串的一部分:set "_this=this "
,因此,请检查/删除代码中字符串/值中的任何可能空格。
答案 1 :(得分:0)