【问题标题】:How to run .cmd file commands hidden so that they don't show when they run如何运行隐藏的 .cmd 文件命令,以便它们在运行时不显示
【发布时间】:2017-11-26 16:04:41
【问题描述】:

我目前有一个在启动时运行以下两个命令的 .cmd 文件

PowerShell -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1
PowerShell C:\Users\elias\Desktop\Script123.ps1 >> "%TEMP%\StartupLog.txt" 2>&1

但是当它在启动时运行时,它会显示命令提示符。我想知道是否有办法在不显示命令提示符的情况下运行它。

谢谢

【问题讨论】:

  • 使用 -WindowStyle 隐藏,但第二个窗口将可见。
  • 打开cmd.exe,输入powershell -?
  • @TheIncorrigible1: 如果你直接调用.cmd 文件,它总是会打开一个控制台窗口,这发生在之前 powershell 运行,所以无论后者可以do 在这里将无济于事。

标签: powershell batch-file cmd


【解决方案1】:

直接调用.cmd 文件总是会打开一个控制台窗口,因此您需要通过隐藏它的包装器可执行文件来调用它:

我的This answer 包含一个VBScript 脚本,它就是这样做的;假设您已将其保存为 runHidden.vbs 在当前目录中,并且您想从当前目录调用 some-batch-file.cmd

wscript .\runHidden.vbs cmd "/c .\some-batch-file.cmd"

【讨论】:

    【解决方案2】:

    在代码开头尝试powershell -command "& { $x = New-Object -ComObject Shell.Application; $x.minimizeall() }"

    这个命令可以最小化所有窗口。

    希望对你有帮助,如果有其他问题,请在下方评论。

    【讨论】:

      【解决方案3】:

      使用 VBScript 创建包装器:

      Option Explicit
      Dim WshShell
      Set WshShell = CreateObject("WScript.Shell")
      WshShell.Run "cmd /c blah.cmd", 0, False
      

      然后把启动项改为

      wscript.exe wrapper.vbs
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        • 2010-11-08
        • 1970-01-01
        相关资源
        最近更新 更多