【问题标题】:Invoke Windows Call command without starting a new console window在不启动新控制台窗口的情况下调用 Windows 调用命令
【发布时间】:2019-08-29 12:56:52
【问题描述】:

我正在尝试使用 windows 命令call 一起调用 2 个命令。这些命令是从 vbscript 文件调用的。 Cscript 命令用于运行 vbscript 文件。当我从 cmd 运行 .vbs 文件时,会显示一个新的 cmd 窗口。有没有办法避免这种情况?我正在为call 命令考虑类似start /B 的东西。下面给出了我的 vbscript。

DIM BuildExecuteString
BuildExecuteString = "cmd /c call ""C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"" & devenv ""Test.sln"" /Rebuild ""Release|Any CPU"" /project ""Test"""

Set objShell = CreateObject("Wscript.Shell")
Call objShell.Run(BuildExecuteString, 1, True)

【问题讨论】:

  • 您是否尝试将 intWindowStyle 1 (激活并显示窗口) 设置更改为 0 (隐藏窗口)
  • 将 WindowStyle 设置为 0 会隐藏窗口。我不希望这样,我希望已启动应用程序的输出显示在调用 vbscript 的同一 cmd 中。
  • 如果 vbscript 已经在 cmd.exe 窗口中通过 cscript.exe 运行,为什么还要打开另一个 cmd.exe 实例?事实上,您为什么要通过 vbscript 运行批处理文件?不能直接直接运行Call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"...吗?
  • 没有cmd /c 我得到错误t.vbs(5, 1) (null): The system cannot find the file specified.
  • @FaisalM,我告诉过你根本不要使用 vbscript/cscript,你显然是从批处理文件中运行的,所以不要,只需将 vbscript 的东西完全替换为 calling VSDevCmd 与您的具体论点。

标签: batch-file cmd vbscript


【解决方案1】:
Call objShell.Run(BuildExecuteString, 0, True)

1、0等是windowStyle(应该如何运行):

See how the run command works

【讨论】:

  • 0 选项隐藏新的 cmd 窗口,因此不会显示新窗口的输出。我希望输出显示在同一个 cmd 中。我的问题是 call 命令总是显示一个新窗口。
  • 不能在同一个CMD中输出执行。作为替代方案,您可以输出批处理文件在 TXT 中的作用并在执行后读取它,请参阅stackoverflow.com/questions/5690134/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多