使用"cmd /c"但隐藏控制台窗口

32

我有一个快捷方式,点击时运行以下命令:cmd /c "我的批处理文件的完整路径"。当我使用它时,它会执行它应该执行的操作,但是在此过程中会出现难看的控制台窗口。有没有办法让这个命令启动一个隐藏或至少最小化的窗口?


1
它不应该显示,但Windows有一种以不同的方式做事情的历史,所以实际上并没有简单的方法。如果你真的想让它在后台运行,最好创建一个服务。 - arielnmz
在快捷方式中,命令下面有一个下拉菜单,您可以选择普通窗口或最小化。 - Jerry Jeremiah
7个回答

23
使用命令 start 并带有开关 /min,可以在最小化的窗口中启动 cmd
start /min cmd /c "full path to my batch file"

2
为什么要踩这个回答呢?它正确地回答了问题(“...或最小化”)。 - Stephan
1
如果在注册表中使用这种方式来创建上下文菜单项,该项将无法正常工作。 - Nick Veld
或者 /wait /min cmd /c "我的批处理文件的完整路径" - secondplace

17
powershell "start <path of batch file> -Args \"<batch file args>\" -WindowStyle Hidden"

可以将此内容放置在单独的批处理文件中,当调用时,该文件将立即终止,而您的批处理文件将在后台执行。

如果您的批处理文件没有参数,则可以省略从 ' Args ' 到 ' \ " ' 的部分。

在结束引号之前添加“-v runAs”以将您的批处理文件作为管理员运行。


7
我是一位有用的助手,可以翻译文本。
我找到了这个解决方案:
创建一个 launch.vbs 文件并添加:
Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0
Set WshShell = Nothing

请用您的绝对或相对路径文件名替换"C:\Batch Files\syncfiles.bat"。
来源:https://www.winhelponline.com/blog/run-bat-files-invisibly-without-displaying-command-prompt/ MSDN来源:https://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx

3

使用AutoHotKey文件。首先下载并安装AutoHotKey。

假设你有一个1.bat文件

你需要创建一个C:\2.ahk文件,其内容为

Run C:\1.bat,,Hide
return

你将创建一个名为 3.lnk 的文件,并右键单击它,点击属性,然后将“目标”设置为

"C:\Program Files\AutoHotkey\AutoHotkey.exe" C:\2.ahk

那么你将会得到你想要的。

这样,你可以将3.lnk附加到任务栏或开始菜单,并更改它的图标。

启动方法只能在批处理文件中使用,无法添加到任务栏或更改图标。


3

右键单击快捷方式图标,选择“属性”。

在“快捷方式”选项卡中,从下拉菜单中选择所需的“运行”类型。

START命令有一个/B开关,可以在不创建窗口的情况下启动。使用START /?来了解更多信息。


1
这将创建一个独立的进程(无窗口),不会阻塞父窗口,因此可以继续您的主要工作:
start /b cmd /c "full path to my batch file"

0
创建一个 VBScript 文件作为外壳来启动它。
' Launcher.vbs
If WScript.Arguments.Count = 0 Then
  WScript.Quit 1
End If

Dim WSH
Set WSH = CreateObject("WScript.Shell")
WSH.Run "cmd /c " & WScript.Arguments(0), 0, False

你可能想将此作为 Here Document 嵌入到批处理文件中。请参见Windows 批处理的 Here Document?


确保wscript.exe运行.vbs文件而不是cscript.exe,否则控制台会短暂闪现。您可以通过命令提示符配置此项,方法是使用“cscript //H:WScript”命令。使用wscript.exe应该是默认设置。 - Eryk Sun
2
通常情况下,您需要在参数周围加上引号,例如 WSH.Run "cmd /c """ & WScript.Arguments(0) & """", 0, False。否则,如果命令以带引号的可执行路径开头,并且命令行中至少有一个带引号的参数,则CMD将在剥离第一个和最后一个引号时搞乱引号。 - Eryk Sun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接