这个问题已经在这里有了答案:
- 以完全隐藏的方式运行批处理文件 23个答案
在Windows XP上,是否可以通过快捷方式运行批处理(.bat或.cmd)文件,而没有“黑屏”?
这个问题已经在这里有了答案:
在Windows XP上,是否可以通过快捷方式运行批处理(.bat或.cmd)文件,而没有“黑屏”?
Answers:
将“ testing.bat”替换为批处理文件的名称后,将以下内容另存为wscript,例如hidecmd.vbs。
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false
的第二个参数oShell.Run
是intWindowStyle
表示程序窗口外观的值,而零值表示隐藏窗口。
.bat
使用此方法以administartor 身份运行文件?
这只是沙吉的答案的简化。您可以通过VBScript(.vbs)脚本运行批处理脚本,如下所示:
'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
这将执行您的批处理文件,并且不显示命令窗口。
.bat
使用此方法以管理员身份运行文件?
只是为了扩展“使用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文件作为其第一个参数来调用批处理文件作为第二个。
"C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat
。
"C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat
。无论我尝试哪种方法-都用双引号引起来,用%20代替空格,或两者结合使用,均无效。我收到一条错误消息,告诉我找不到文件或什么也没有发生。这是由于我的用户错误,Windows的快捷方式的“目标”字段限制,还是由于vbs脚本无法正确处理带有空格的文件路径的问题?
使用以“ / B”选项开头。例如:
@echo off
start /B go.bat
start /b
只会在当前分配的控制台中运行该程序,而不是生成一个新程序。无论如何,您将获得一个新的文件夹,因为该批处理必须使用cmd运行(这反过来会打开一个控制台)。
SYSTEM
在C / C ++中)从其他应用程序启动批处理文件非常有用。
cmd /c foo.cmd
。start
在这些情况下绝对不需要使用,而且我认为system
不应使用来支持CreateProcess
。通过启动批处理文件,您已经依赖于一个平台,因此不妨使用更好的工具来完成工作。
cmd /c
过。在我的情况下,我需要使用cmd命令,但是到目前为止,我找到的所有stackexchange答案(关于运行另一个批处理文件的批处理文件)都具有使用start的最佳答案...
start /b go.bat
不会分配新的控制台(即conhost.exe的实例-或Windows 7之前的csrss.exe中的线程)。但是,由于批处理脚本是使用附加到同一控制台的cmd.exe的新实例运行的,因此会造成混乱。Shell的两个实例都将竞争从控制台读取输入的过程,通常是交替进行的。它需要/w
(例如start /b /w go.bat
)以便等待第二个实例,这与使用cmd /c
using 相似system
。另外,如果您要致电CreateProcess
,请go.bat
直接运行。不需要cmd /c
。
免费的GPL开源“创建隐藏进程”
http://www.commandline.co.uk/chp/
Microsoft Security Essentials以及可能大多数其他病毒/恶意软件扫描程序都将可执行文件chp.exe视为病毒,因为它像病毒一样隐藏了您从显示窗口或任务栏按钮中指定的任何程序。
这不是病毒。例如,它不会隐藏目标进程使其不出现在任务管理器中。当然,其中包括源代码,因此您可以看到它非常小,除了运行您提供的任何程序外,什么也不做。
您甚至不必相信包含的chp.exe确实是从该来源构建的。您可以继续丢弃包含的chp.exe并从源代码进行编译,而所有必要的工具甚至都可以免费下载。
您也可以只是创建.bat或.cmd文件的快捷方式,然后右键单击快捷方式,“属性”,“快捷方式”选项卡,“运行:最小化”。然后,在计划的任务中,直接使用快捷方式而不是.bat / .cmd文件。这样可以防止弹出窗口,但是任务栏按钮仍会出现。
您可以使用诸如AutoIt之类的窗口脚本。
例如,只需将其写入AutoIt脚本编辑器即可。这很简单
Run("C:\test\batchfile.bat", "", @SW_HIDE)
如果要循环运行,
$x=0
Do
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Sleep(5000)
Until $x = 1
将其编译为.exe-完成。
同样,在AutoHotkey中:
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
使用隐藏启动 (费用$ 20)
隐藏的开始-在没有控制台窗口或UAC提示的情况下运行应用程序和批处理文件
控制台应用程序和批处理文件在Windows启动时或按计划定期运行。这样做的主要不便之处在于,每个应用程序都打开一个控制台窗口,该窗口在屏幕上闪烁。隐藏启动(或Hstart)是一种轻巧的命令行实用程序,它使您可以在后台运行任何窗口的控制台应用程序和批处理文件,在Windows 7和Vista下处理UAC特权提升,并行或同步启动多个命令,等等。 。
简单的解决方案,无需使用任何其他程序。
祝好运!