【发布时间】:2021-08-20 02:10:41
【问题描述】:
我有以下批处理文件:
cd C:\myfolder\MyScripts
"C:\Program Files\nodejs\node.exe" runTest.js & %1
%1 是我从 c# 应用程序发送的参数。
& 是一个允许在后台执行进程的命令(这对我来说是强制性的)
我的问题是命令行在与号中停止,并且没有将参数发送到我的文件。 如果我将 "C:\Program Files\nodejs\node.exe" runTest.js %1 & 与与符号放在最后,则该进程不会在后台运行并停止。
有人可以帮我吗?
我需要让进程在后台运行并发送参数。
注意:如果我在批处理文件中硬编码一个值,它可以正常工作,例如:
“C:\Program Files\nodejs\node.exe”runTest.js & 500
但是当我使用语法传递参数值时,它会失败。 非常感谢!
【问题讨论】:
-
您确定
"C:\Program Files\nodejs\node.exe" runTest.js & 500有效吗?因为在 cmd.exe/batch 文件中 & 号是一个特殊字符,用于连接两个命令,它应该执行"C:\Program Files\nodejs\node.exe" runTest.js后跟无效命令500。也许您应该使用插入符号^&转义与号,或者双引号引用参数"& 500"或参数"&" "500" -
是的,它有效。执行我的流程并传递参数。 bashitout.com/2013/05/18/Ampersands-on-the-command-line.html 这个尾随的 & 号指示 shell 在后台运行命令,也就是说,它被分叉并在单独的子 shell 中作为作业异步运行。 shell 将立即返回 0 的返回状态为 true 并正常继续,在脚本中处理进一步的命令或将光标焦点返回给 Linux 终端中的用户。
-
据我所知或可以在网上找到,'&' 不是 windows .cmd 的一部分。在 unix shell 中运行后台作业是标准的,但在 Windows shell 中却不是。这是通过
start /min cmd /c mycommand完成的 - 请参阅serverfault.com/questions/121979/… -
您的链接用于
bash,即基于Unix 的Bourne Again SHell,而不是Windowscmd.exe,即您的标签[cmd],用于您的标签[batch-file] .您确定您没有将bash与batch混淆吗? BTW,如果您指的是Windows cmd.exe 和Windows 批处理文件,请查看[shell] 标签的信息,并说明您使用它的原因! -
1.打开命令提示符窗口。 2. 输入
cd c:\myfolder\MyScripts,然后按[ENTER]。 3. 输入"C:\Program Files\nodejs\node.exe" runTest.js & 500,然后按[ENTER]。你会清楚地看到会发生什么。 顺便说一句,该链接准确地告诉您我已经告诉您正在发生的事情,它使用与号分隔两个命令,500不是命令!。此外,正如我已经向您提到的那样,您还没有更正您的标签。
标签: batch-file cmd command