如何在vb.net中运行静默模式批处理脚本命令
我有一个.bat文件,用于在静默模式下运行.Msi。现在我想从vb.net运行批处理脚本命令。我尝试使用如何在vb.net中运行静默模式批处理脚本命令,vb.net,batch-file,cmd,Vb.net,Batch File,Cmd,我有一个.bat文件,用于在静默模式下运行.Msi。现在我想从vb.net运行批处理脚本命令。我尝试使用process.start()。使用process.start()打开文件,但问题是批处理脚本没有执行,并且没有安装.Msi。我尝试直接从cmd执行相同的命令,结果成功了 现在,有人可以帮助我如何从vb.net执行该命令(有人可以帮助我在从vb.net启动cmd进程后将该命令写入cmd窗口)。我尝试使用standardinput.Writeline(),它正在打开.txt文件,但无法执行用于安
process.start()
。使用process.start()
打开文件,但问题是批处理脚本没有执行,并且没有安装.Msi。我尝试直接从cmd执行相同的命令,结果成功了
现在,有人可以帮助我如何从vb.net执行该命令(有人可以帮助我在从vb.net启动cmd进程后将该命令写入cmd窗口)。我尝试使用standardinput.Writeline()
,它正在打开.txt文件,但无法执行用于安装.Msi文件的命令
Dim command As String="@ echo off msiexec /i
""C:\Users\tparvathaneni\Documents\Visual Studio 2015\Projects\SetupProject1\SetupProject1\bin\Debug\SetupProject1.msi"" /qn REBOOT=ReallySuppress echo pause >NUL shutdown.exe /r/t 000"
Dim proc As New ProcessStartInfo
proc.FileName = "cmd.exe"
proc.RedirectStandardInput = True
proc.RedirectStandardOutput = True
proc.CreateNoWindow = True
proc.UseShellExecute = False
Dim pr As New Process
pr.StartInfo = proc
pr.Start()
pr.BeginOutputReadLine()
pr.StandardInput.WriteLine(command)
将其放入VBS将启动批处理脚本,而不带窗口或托盘图标。这可能比尝试向批处理窗口发送命令更简单
Set WshShell = CreateObject("WScript.Shell" )
WshShell.Run chr(34) & "C:\Temp\YourFile.bat" & Chr(34), 0
我认为将
ProcessStartInfo
上的CreateNoWindow
设置为True
应该可以完成这项工作,因为您已经将UseShellExecute
设置为False
。设置CreateNoWindow=True有助于防止出现cmd弹出窗口。非常感谢。但是,我在执行批处理脚本时还有一个问题,即我提供的代码中的my命令。您需要使用Environment.NewLine
(例如“@echo off”&Environment.NewLine&“msiexec/I(…)”&Environment.NewLine
等分隔每个命令。请注意,您需要安排(/r(或/g)/t[秒])关闭,否则它将在启动安装程序后立即执行。“暂停”操作不起任何作用。使用参数执行“cmd.exe”(在ProcessStartInfo
)“/k”或“start/WAIT”…或使用“WAITFOR/T[Seconds]InstallComplete”&Environment.NewLine
。这将在指定的秒数内插入给定信号的等待超时。+最后一个批处理命令应为“退出”&Environment.NewLine
。您可以将这些字符串链接为一个命令。但是您必须使用环境来分隔不同的命令。NewLine
,而不是命令参数。例如“/qn”是msiexec
的参数。它必须位于同一行中(即msiexec/i”“[.msi文件路径])“/qn REBOOT=ReallySuppress”&Environment.NewLine
)。在此,我假设REBOOT=ReallySuppress
是msiexec
属性值。为了在安装后重新启动,您还可以使用msiexec
开关/promptreast
或/forcerestart
。因此,您不需要自己处理它(除非您有理由)。这对我不起作用。我正在尝试在没有命令提示符弹出窗口的情况下运行批处理脚本。而您提供的代码至少对我没有任何作用。是否有其他方法来执行此操作。