在powershell脚本中运行.bat而不打开任何窗口

时间:2016-03-01 13:22:57

标签: windows powershell batch-file command-prompt

我编写了一个PowerShell脚本,用于解释命令的邮件正文,并创建一个.bat文件来执行它找到的突击队。 这个脚本有效,但一个大问题是无论何时执行.bat文件,命令提示窗口都会快速闪烁在屏幕上。我想知道是否可以防止这种情况发生?

我的代码:

$m.Body | Out-File cmd.bat -Encoding ascii -Append
.\cmd.bat | Out-File results.txt

我必须设置任何属性命令吗? 感谢。

2 个答案:

答案 0 :(得分:1)

可以找到答案和信息here

从那里,选择的答案,以防链接过时:

  

将以下内容保存为wscript,例如,在替换" testing.bat"之后将hidecmd.vbs保存。使用批处理文件的名称。

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false
  

oShell.Run的第二个参数是intWindowStyle值,表示程序窗口的外观,零值表示隐藏窗口。

     

参考文献在http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx

答案 1 :(得分:0)

我在撰写本文时意识到这个问题已有2年多的历史了,但是仍然没有官方的答案。尽管我是PowerShell的新手,但我认为与使用vbscript或COM相比,我对Powershell的回答更纯正。

使用调用命令:

Invoke-Command {cmd.exe /c cmd.bat} | Out-File results.txt

那应该可以解决问题。这将外壳到cmd.exe,并且/ c将在完成时自行终止外壳。它将在当前外壳中运行,因此不会打开新窗口。