我不想使用一些程序来做到这一点,我正在寻找更清洁的东西。我已经找到了使用VBScript的解决方案,但我也不太喜欢使用VBS。
#1 楼
解决方案1:将这一行文本另存为文件
invisible.vbs
: CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False
运行任何程序或批处理文件不可见地,请像这样使用它: “>
CreateObject("Wscript.Shell").Run "" & WScript.Arguments(0) & "", 0, False
示例:
Invisible.vbs "Kill.vbs ME.exe"
方法2:
使用命令行工具以静默方式启动进程:Quiet,hidecon或hideexec。
评论
为什么用双引号4个,请您解释一下?
– Starx
2011年7月28日在7:44
@Starx VB语法。 &表示连接字符串。字符串用双引号(“)引起来。字符串定界符内的连续双引号(”“)表示文字双引号(”)。因此,四个双引号(“”“”)将是一个字符的字符串文字,一个双引号(“)。将它们放在一起,”“”“&WScript.Arguments(0)&”“”“将变为“
–鲍勃
2012-12-17 17:39
最终,经过数小时的浪费时间进行搜索和尝试之后,这一台VBS便成功了。谢谢,最简单的解决方案可以从计划任务中静默启动批处理文件。
– Bungle先生
13年5月12日在20:46
如何修改它以便传递所有参数?传递参数而不引用参数会更方便。
– Ctrl-C
2015年6月12日14:13在
这是否还不要求您创建一个批处理文件以将wscript.exe“ C:\ Wherever \ invisible.vbs”放入其中?
– Endolith
17年7月27日在13:52
#2 楼
隐藏批处理文件或命令文件或任何文件...。使用IExpress.exe
实用程序中内置的Windows XP从批处理文件中生成.EXE。使用IExpress
时,请确保选中“隐藏运行”选项,并选中所有未显示任何内容的复选框。创建.exe后,将其放在您选择的任何运行命令文件夹中,您将永远看不到它。评论
哦,实际上是好的解决方案。
–卡米洛·马丁(Camilo Martin)
2012年9月8日,下午1:34
在Windows 7等较新的Windows版本中,有什么与lexpress.exe等效的东西?
–Sнаđошƒаӽ
2015年6月23日下午5:00
@Sнаđошƒаӽ它在Windows 7中。
– DarthRubik
16年7月17日在0:12
这似乎在Windows 10 64上不起作用,因为“ Command.com”似乎不再存在
–Arne S
17-10-11在23:10
我可以通过@ArneS确认评论。您可以生成EXE,但由于缺少文件(即Command.com)而无法运行。
–布拉姆·范罗伊
18-10-23在7:27
#3 楼
使用Cmdow是用于NT4 / 2000 / XP / 2003的Win32命令行实用工具,它允许列出,移动,调整大小,重命名,隐藏/隐藏,禁用/启用,最小化,最大化,还原,激活/非激活,关闭,终止和关闭窗口更多。运行隐藏的批处理文件并传递参数:-
cmdow / run / hid mybat arg1“ arg 2”
评论
但是我将如何运行此命令?
– Moayad Mardini
09-10-29在13:01
大多数防病毒产品都将cmdow检测为恶意软件。因此,很难在您自己的PC之外的其他地方使用此解决方案。
–甘尼什(Ganesh R.)
09-10-29在13:02
@Ganesh:还有更好的解决方案吗?
– Moayad Mardini
09-10-29在13:04
它是开源的吗?使用非开源的第三方应用程序毫无用处,当您可以通过运行harrymc的1行vbscript来完成相同的操作时,可以打包木马(请参阅他在线程顶部的回答)。
–thebunnyrules
17年11月16日13:21
好吧,它是开源的,因此非常棒。可以在这里获取源代码:github.com/ritchielawrence/cmdow
–thebunnyrules
17年11月16日在13:40
#4 楼
通过at作业运行脚本而无需使其交互:创建脚本并使用pythonw
(GUI操作的链接版本)运行该脚本。由于您没有使用任何图形API,因此不会显示该窗口。只需使用对os.system()
的调用,它将模仿批处理脚本,因为它与在命令行中键入字符串相同。示例:
at 11:00 script.bat
评论
但是我将如何运行该命令?
– Moayad Mardini
09-10-29在13:07
您将必须安排计划的任务或编写服务。
–没钱的坚果
09-10-29在13:26
添加示例。
– John T
2009年10月29日14:44
#5 楼
如果您的批处理文件可以容纳一行并且包含许多字符,则只需使用快捷方式,方法是右键单击随机目录中的文件夹,然后跳过向导的其余部分,最后右键单击刚创建的快捷方式单击属性,然后在目标下,输入通常放在bat文件中的内容。和Bobs你的叔叔!优点:
评论
唯一的问题是您不能将文件类型与快捷方式关联。因此,如果要通过在资源管理器中双击打开带有批处理脚本的脚本,则仍需要一个.bat文件。
–BjörnLindqvist
2014年1月24日15:40
我仍在寻找鲍勃叔叔,在任何地方都在这里!
–以前的Pimp Juice IT
17年6月15日在20:13
@BjörnLindqvist对于此用例,我将创建一个启动程序pyw脚本,然后将文件类型分配给该脚本。脚本内容将是例如导入子进程,sys; subprocess.Popen([''path / to / prog.exe',sys.argv [1]],shell = True,stdin = None,stdout = None,stderr = None,close_fds = True,creationflags = subprocess.DETACHED_PROCESS)和该脚本的分配为“ path \ to \ pythonw.exe”“ path \ to \ starter_script.py”“%1”。我发现RapidEE是分配文件类型的理想工具。另请参阅John T关于Python v2运行程序方式的答案。
–尼尔斯·林德曼
20年8月14日在18:20
顺便说一句,我的个人脚本工具功能之一具有签名doubleclick(* args),可完成上述操作。当args仅是[filepath]时,它将使用默认程序打开文件路径。
–尼尔斯·林德曼
20年8月14日在18:30
我在第一个评论中犯了一个错误,我的意思是FileTypesMan,而不是RapidEE(它也非常方便,它可以编辑环境变量)。
–尼尔斯·林德曼
20年8月14日在18:46
#6 楼
我不喜欢VBScript解决方案。将nircmd.exe下载并复制到您的
%systemroot%\system32
文件夹中,然后将此命令添加到批处理的第一行:nircmd.exe win hide ititle "cmd.exe"
,或先使用
title
命令自定义批次标题,以避免隐藏所有cmd
窗口,例如:title MyBatch
nircmd.exe win hide ititle "MyBatch"
评论
我使用了这种确切的方法,但是有一段时间失败了,nircmd不会隐藏cmd窗口,只是最小化到任务栏,并且无法通过单击来恢复。不知道为什么
–杨洁mes
18年6月21日在1:42
#7 楼
您可以轻松地将其最小化运行。start /MIN batch.cmd
评论
或改用/ B!
–兰尼
16年6月15日在13:26
start是cmd内置命令。无法从Task Scheduler等获得
– gavenkoa
20年1月25日在19:58
#8 楼
您还可以创建AutoHotkey脚本:#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
#9 楼
使用Windows7,您可以使用“计划任务”控制面板来计划批处理文件,使其以指定的权限甚至以“ SYSTEM”帐户身份在后台运行。请参见下面的屏幕快照:此外,尽管功能不那么多,您还可以使用“ AT”从命令行创建像这样的不可见批处理脚本任务。 exe”命令,不带'/ interactive'选项。
评论
“隐藏”复选框仅从“任务计划程序”用户界面中隐藏任务(
– Sourav Ghosh
16-10-25在17:24
在不需要“ SYSTEM”特权(并且没有针对安全性漏洞进行检查和强化)时以“ SYSTEM”身份运行任务是一个坏主意;在这里查看评论。
–斯科特
'18 Sep 1'在16:33
我的理解是,使任务隐藏的原因是“无论用户是否登录都运行”选项。就像Sourav Ghosh所写的那样,复选框“隐藏”只是阻止任务计划程序显示任务定义。有关更多信息,请参见:howtogeek.com/tips/…
–多洛雷斯·史蒂文斯(Dolores Stevens)
20 Jul 13'11:43
#10 楼
出色的Bat To Exe Converter会将您的.bat
或.cmd
文件转换为.exe
文件。 它具有简单的UI。通过选择
Exe Format
选项中的XX Bit | Windows (Invisible)
,可以选择不具有控制台窗口。此外,它还允许您分配图标,设置密码和其他几个选项。#11 楼
从C / C ++开始的另一种方式是使用带有CREATE_NO_WINDOW标志的CreateProcess函数。它具有许多此处未显示的额外功能。这只是替换system()或_spawn()系列的最低要求。STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );
// Spawn creates a cmd.exe window. CreateProcess doesn't.
//if ( _spawnl( _P_WAIT, szFileNameBAT, szFileNameBAT, NULL ) ) {
if ( !CreateProcess( szFileNameBAT, szFileNameBAT, NULL, NULL, false,
CREATE_NO_WINDOW, NULL, NULL, &si, &pi ) ) {
MyErrorFunc( "CreateProcess( \"%s\" ): %d", szFileNameBAT, GetLastError() );
goto MyErrorHandling;
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
评论
WINAPI方法的正确答案。这是源代码和应用程序,可作为您答案的补充。
– Alex
19年5月13日在12:26
#12 楼
在另一篇文章中添加我的答案,因为它是重复的,我在这里看不到此解决方案,所以现在有17种不同的答案
,用于隐藏批处理文件的运行方式。我将在不久的将来删除关于该帖子的答案。
使用批处理逻辑和命令创建批处理脚本,然后创建扩展名为
.VBS
的新文件,请使用以下逻辑(下面提供了示例我所提供的示例),并仅使用.CMD
等命令插入.BAT
或PING -t <IPAddress>
文件的完整路径,以便它以隐藏方式执行批处理,而在执行时不显示命令窗口。 下面的示例中的逻辑指定了
C:\Folder\BatchFileName.cmd
的更改,使其指向您正在手动运行的命令等批处理脚本。使用.VBS
计划它。在Windows7上计划任务以不确定的时间表运行以满足您的需求时遇到问题。您将其指向需要的地方。注意:我相信这是我获得此脚本的地方逻辑,但是它可以可靠地用于您在此处需要的相同目的,即确保在运行批处理文件时隐藏命令窗口。服务器故障源
br />
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.cmd" & Chr(34), 0
Set WinScriptHost = Nothing
#13 楼
我通过nircmd成功地做到了:从链接下载nircmd.exe
创建.bat文件
第一行。 bat文件必须是:
nircmd.exe win hide ititle "cmd.exe"
选择两个文件,并使用winrar
在“常规”标签中创建一个自解压文件,在“常规”标签中选中“创建自动提取文件”框“高级”选项卡选择“自动提取”按钮
有一个新窗口,然后选择“模式”选项卡,然后选择选项:“隐藏所有内容”
选择选项卡“更新”并选择选项“覆盖现有文件”
如果需要,选择“常规”选项卡并定义要提取的目标文件夹,然后在“提取后执行”框中,输入将提取.bat的完整路径。 :“ c:\ windows \”,则提取后要执行的完整路径将为:“ c:\ windows \ file.bat”(如果您的.bat名为:file.bat)
单击接受所有窗口
现在您将拥有一个.exe文件,双击后,安装后,您的.bat文件将完全隐藏。
#14 楼
尽管我已经回答了这,但这是另一种方法。区别在于批处理脚本可以在运行过程中自行隐藏。尽管如此,您将需要两个附加脚本-windowMode.bat和getCMDPid.bat(均包含.net
代码)。那么如何使用:@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode hidden
echo this should be written into log despite the cmd window is hidden>log
echo ending the log>>log
exit
#15 楼
我创建了RunApp来完成这项工作,并在生产环境中使用它,希望对您有所帮助。如下所示的配置: br />
:style:hidden
MyBatchFile.bat
arg1
arg2
并启动
runapp.exe
。#16 楼
您不需要执行任何特殊操作。如果从Windows服务运行批处理文件,则默认情况下应将其隐藏,除非您启用服务。
#17 楼
我需要隐藏从资源管理器上下文菜单中调用的批处理文件的窗口,还需要在参数上添加引号。没有答案对我有用,因此我添加了自己的解决方案。我在浏览器上下文菜单的注册表“命令”上有此命令:像这样: />请注意,.bat路径不能包含空格,因此将其替换为8.3文件名。因此,例如
C:\mypath\myscript.vbs
必须引用为C:\Program Files\myprogram.bat
。要查看8.3文件名,请使用C:\Progra~1\myprogram.bat
#18 楼
这适用于Windows 8(可能是其他Windows)照常创建批处理文件
创建批处理文件的快捷方式
右键单击快捷方式>属性
单击布局
取消选中“让系统位置窗口”
设置左位置tp -1000
单击应用
单击快捷方式即可运行,但您不会看到它: )
评论
真?这不会在任务栏上显示为按钮吗?
–斯科特
14年8月16日在0:23
#19 楼
我遇到了同样的问题,但发现了:Shell("filehere" & "parametersforbatchfilehere", vbHidden)
#20 楼
使用Powershell:Start-Process -FilePath "Batch file path" -ArgumentList "args" -WindowStyle Hidden
评论
但是然后您有了PowerShell控制台窗口。
–马丁·普里克里(Martin Prikryl)
20-09-17在11:27
评论
哈哈!当然不。我正在开发Windows服务,该服务将不时运行批处理文件。Windows服务不能作为批处理文件运行。它们作为服务运行。您需要澄清问题-就书面内容和评论而言,这对我来说毫无意义。
我有一个运行批处理文件的Windows服务。并非该服务是批处理文件。
您用什么语言编写服务?
也有hstart。