如何在命令行中使用 & 符号执行我后台的批处理文件,但传递参数?
How Can I execute a batch file i back ground using & ampersand in command line, but passing parameters?
我有以下批处理文件:
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
但是当我使用语法传递参数值时,它失败了。
非常感谢!
对于所有和我有同样问题的人,我是这样解决的:
我把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
并且完全符合我的需要。
我有以下批处理文件:
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
但是当我使用语法传递参数值时,它失败了。 非常感谢!
对于所有和我有同样问题的人,我是这样解决的:
我把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
并且完全符合我的需要。