首页 > 解决方案 > 如何在命令行中使用 & & & & 符号在后台执行批处理文件,但传递参数?

问题描述

我有以下批处理文件:

    cd C:\myfolder\MyScripts
    "C:\Program Files\nodejs\node.exe" runTest.js & %1

%1 是我从 ac# 应用程序发送的参数。

& 是一个允许在后台执行进程的命令(这对我来说是强制性的)

我的问题是命令行在与号中停止,并且没有将参数发送到我的文件。如果我将 "C:\Program Files\nodejs\node.exe" runTest.js %1 & 与与符号放在最后,则该进程不会在后台运行并停止。

有人能帮我吗?

我需要让进程在后台运行并发送参数。

注意:如果我在批处理文件中硬编码一个值它工作正常,例如:

"C:\Program Files\nodejs\node.exe" runTest.js & 500

但是当我使用语法传递参数值时,它会失败。太感谢了!

标签: batch-filecmdcommand

解决方案


对于所有和我有同样问题的人,这就是我解决它的方法:

我将cmd更改为powershell。

所以 C# 代码是这样完成的:

 process.StartInfo.FileName = @"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe";
 process.StartInfo.Arguments = $"-File \"{ScriptNameOne}\" \"{param1}\"  \"{param2}\" \"{param3}\"";
 process.StartInfo.UseShellExecute = true;
 process.Start();

我在powershell中做了这样的脚本:

param(
    [string] $param1, 
    [string] $param2,
    [string] $param3
)
Set-Location "C:\My folder\My other folder"
& "C:\Program Files\nodejs\node.exe" "index.js" $param1 $param2 $param3 

并且可以根据我的需要完美运行。


推荐阅读