如何从Powershell向批处理文件传递参数
我尝试了以下的多次迭代,但都没有成功。 .bat文件需要接受2个参数$IN和$TIC是首字母和票号 变量:如何从Powershell向批处理文件传递参数,powershell,batch-file,parameters,Powershell,Batch File,Parameters,我尝试了以下的多次迭代,但都没有成功。 .bat文件需要接受2个参数$IN和$TIC是首字母和票号 变量: $IN = $textboxInitials.Text $TIC = $textboxTicket.Text 这些命令都不起作用: start "\\Path\InstallOffice.bat" $IN $TIC start "\\Path\InstallOffice.bat $IN $TIC" start "\\Path\InstallOffice.bat" KL 562355 cm
$IN = $textboxInitials.Text
$TIC = $textboxTicket.Text
这些命令都不起作用:
start "\\Path\InstallOffice.bat" $IN $TIC
start "\\Path\InstallOffice.bat $IN $TIC"
start "\\Path\InstallOffice.bat" KL 562355
cmd.exe /C "\\Path\InstallOffice.bat" KL 562355
& "\\Path\InstallOffice.bat" $IN $TIC
这是可行的,但没有参数
start "\\Path\InstallOffice.bat"
我正在编写一个程序,在我们的标准构建过程之后安装一系列程序,以便帮助台可以选择需要安装的程序。这只是要运行的第一个命令,之后还会有一堆命令,因此powershell需要等待.bat文件完成,然后才能执行下一个命令 使用启动过程。您可以使用-ArgumentList$A、$B、…,传递参数
此外,您可以使用-PassThru调用它来接收流程对象并对其调用WaitForExit
这是页面。带有此小演示批EchoArgs.cmd:
@Echo off&SetLocal EnableDelayedExpansion
Set Cnt=0
Echo:Args=%*
:loop
If "%~1" Neq "" Set /A Cnt+=1&Echo Arg!Cnt!=%1&Shift&Goto :loop
这是对5个命令的稍微修订版本:
$IN = 'KL'
$TIC = '562355'
$Bat = ".\EchoArgs.cmd"
Clear
"--Variant 1"
start -wait -NoNewWindow $Bat -args "$IN $TIC"
"--Variant 2"
start -wait -NoNewWindow $bat "$IN $TIC"
"--Variant 3"
start -wait -NoNewWindow $Bat "KL 562355"
"--Variant 4"
cmd.exe /C $Bat KL 562355
"--Variant 5"
& $Bat $IN $TIC
我得到以下示例输出:
--Variant 1
Args=KL 562355
Arg1=KL
Arg2=562355
--Variant 2
Args=KL 562355
Arg1=KL
Arg2=562355
--Variant 3
Args=KL 562355
Arg1=KL
Arg2=562355
--Variant 4
Args=KL 562355
Arg1=KL
Arg2=562355
--Variant 5
Args=KL 562355
Arg1=KL
Arg2=562355
在bat脚本中,您是否将%1引用为$In,将%2引用为$TIC?如果您绕过PowerShell脚本,从cmd控制台执行bat脚本,它是否会以本机方式运行?