如何在不启动“命令窗口”的情况下运行批处理文件?

如何在不启动“命令窗口”的情况下运行批处理文件?

在 Windows XP 上,我可以通过快捷方式运行批处理文件(.bat 或 .cmd),而不会出现“黑屏”吗?

答案1

将以下内容保存为 wscript,例如,将“testing.bat”替换为您的批处理文件的名称,然后将其保存为 hidecmd.vbs。

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

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

参考这里http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx

答案2

这只是 Shaji 答案的简化。您可以通过VB脚本(.vbs)脚本如下:

隐藏蝙蝠程序

CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

这将执行您的批处理文件,但不显示命令窗口。

答案3

为了扩展“使用 Windows 脚本”答案(我认为这是最好的答案,因为它已经内置),以下是如何使用单个包装器脚本并将“真实”批处理文件的名称作为参数传递。其他参数将传递给批处理文件。

If WScript.Arguments.Count >= 1 Then
    ReDim arr(WScript.Arguments.Count-1)
    For i = 0 To WScript.Arguments.Count-1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
      arr(i) = Arg
    Next

    RunCmd = Join(arr)
    CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

例如将上述文件保存为NoShell.vbs某处然后调用:

NoShell.vbs c:\foo\my_batch_file.bat

最后,如果您希望从不理解 .vbs 文件的地方(例如 Visual Studio 中的“外部工具”)运行它,您需要C:\Windows\System32\wscript.exe使用 vbs 文件作为其第一个参数,将批处理文件作为第二个参数进行调用。

答案4

您可以更改快捷方式的属性以最小化运行。

要完全隐形地运行它,您还需要其他东西,例如 Windows 脚本。

相关内容