使用`start`在Windows批处理文件中使用双引号启动进程的副作用

Posted

技术标签:

【中文标题】使用`start`在Windows批处理文件中使用双引号启动进程的副作用【英文标题】:Side-effect of using `start` for launching a process in a Windows batchfile using double quotes 【发布时间】:2017-03-13 10:04:48 【问题描述】:

我正在使用 Windows 系统,该系统用于在批处理文件中启动以下命令:

"C:\...\java" -Xnoclassgc -noverify -XX:NewSize=32m ... -classpath ... <Main_Class> <list of parameters>

由于类路径存在一些问题,我将其更改为:

set Variable="C:\...\java" -Xnoclassgc -noverify -XX:NewSize=32m ... -classpath ... <Main_Class> <list of parameters>
start %Variable%

现在我收到错误消息The system cannot find the file -Xnoclassgc.

这是由于start 命令,是否还有其他最初不可见的副作用(堆大小或其他不再考虑的限制,...),我可以在保持的同时解决这个问题吗? start 命令?

【问题讨论】:

【参考方案1】:

来自http://www.computerhope.com/starthlp.htm:

Windows Vista 和更高版本的语法

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /共享] [/低| /正常 | /高 | /实时 | /高于正常 | /低于一般] [/节点] [/亲和力] [/等待] [/B​​] [命令/程序] [参数]

这意味着如果 start 的第一个参数在 doubleqotes 中,它将作为新 DOS 框的标题,第二个参数代表要执行的文件。

所以在start之后再添加一个双引号字符串:

set Variable="This is the title of the DOS box" "C:\...\java" -Xnoclassgc -noverify -XX:NewSize=32m ... -classpath ... <Main_Class> <list of parameters>
start %Variable%

【讨论】:

感谢您拯救我的一天 :-)

以上是关于使用`start`在Windows批处理文件中使用双引号启动进程的副作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Process.Start() 访问 ssh

异步运行 Windows 批处理文件命令

从 RPC 执行时,Windows START 命令无法运行

优雅地终止从带有“start /b”的 Windows 批处理文件启动的 java (jetty/solr) 进程

如何使用带有路径的“开始”和带有空格的命令在 Windows 中创建批处理文件

CMD START不能在Windows 8中与处理器关联使用