2009-10-29 12:42:48 +0000 2009-10-29 12:42:48 +0000
144
144

以完全隐藏的方式运行一个批处理文件

我在找一些方法来运行一个批处理文件(.bat),而不需要用户看到任何东西(没有窗口,没有任务栏名称,.等等)。我找到了一个解决方案,使用VBScript,但我也不太喜欢用VBS。

答案 (23)

122
122
122
2009-10-29 16:29:10 +0000

Arguments(0)& “”“”“”, 0, False

要运行任何程序或批处理文件,可以这样做:

wscript.exe “C:\Wherever\invisible.vbs” “C:\Some Other Place\MyBatchFile. bat”

为了能够传递/转发一个参数列表,只能使用两个双引号

CreateObject(“Wscript.Shell”).Run “” & WScript.Arguments(0) & “ Arguments(0) & ”“, 0, False

示例: invisible.vbs

解决方案2:

使用命令行工具悄悄地启动一个进程: Quiet , hidecon hideexec .

29
29
29
2012-06-29 21:06:44 +0000

要隐藏批处理文件或命令文件或任何文件…..。使用Windows XP内置的IExpress.exe实用程序,从批处理文件中建立一个.EXE。当使用IExpress时,请确保你勾选了运行隐藏选项,并在所有不显示任何东西的框中打上标记。当你创建了你的.exe后,把它放在你选择的任何运行命令文件夹中,你将永远不会看到它出现。

10
10
10
2009-10-29 12:48:03 +0000

使用 Cmdow 是一个Win32命令行工具,适用于NT4/2000/XP/2003,它可以列出、移动、调整大小、重命名、隐藏/取消隐藏、禁用/启用、最小化、最大化、恢复、激活/不激活、关闭、杀死等。

10
10
10
2013-01-13 03:36:21 +0000

如果你的Batch File能装进一行,而且有那么多字符,那么就用右键在随机目录下的一个文件夹里面点击快捷方式,跳过剩下的向导,最后在刚刚创建的快捷方式上右键点击属性,在目标下点击属性,输入你通常会放在bat文件中的内容。而Bobs是你的大叔!

优点:

No Command Window
 Ability to use an icon
 Same Functionality of bat file

缺点:

Limited to one line, so many characters
9
9
9
2009-10-29 12:49:03 +0000

通过at job运行脚本,而不做交互式操作:

at 11:00 script.bat

另一个解决方案,如果你不介意安装Python之类的东西,你可以简单地创建一个脚本,然后用pythonw(GUI操作的链接版本)运行它。因为你没有使用任何图形API,所以窗口不会显示。只需使用调用os.system(),它就可以模仿一个批处理脚本,因为它就像在命令行中输入字符串一样。

7
7
7
2014-05-12 08:25:28 +0000

我不喜欢VBScript方案。

下载并复制nircmd.exe到你的%systemroot%\system32文件夹中,然后在批处理的第一行添加这个命令:

nircmd.exe win hide ititle "cmd.exe"

或者先用title命令自定义你的批处理标题,避免隐藏所有的cmd窗口,如:

title MyBatch
nircmd.exe win hide ititle "MyBatch"
7
7
7
2009-10-29 15:54:30 +0000

你可以将其最小化运行。

start /MIN batch.cmd
6
6
6
2013-01-09 20:57:35 +0000

使用Windows7,可以使用 “计划任务 "控制面板,在指定的权限下,甚至可以以 "系统 "账户的身份在后台隐身运行一个批处理文件。请看下面的截图。

此外,虽然功能没有那么多,但你也可以在命令行中使用 "AT.exe "命令创建一个像这样的隐形批处理脚本任务,而不需要”/interactive “选项。

5
5
5
2016-10-30 13:15:17 +0000

优秀的【BAT To Exe Converter】(https://www.computerbild.de/download/Bat-To-Exe-Converter-2345613.html)可以将你的`.bat`或`.cmd`文件转换为`.exe`文件。

它有一个简单的UI. 你可以通过选择Exe FormatXX Bit | Windows (Invisible)选项来选择没有控制台窗口。此外,它还允许你分配一个图标,设置密码和其他几个选项。

4
4
4
2011-01-26 19:38:48 +0000

似乎有人列出了7-8种运行 “无声 "的方法:

http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html

4
4
4
2017-06-19 08:27:15 +0000

还有一种方法是使用C/C++的CreateProcess函数和CREATE/NO/WINDOW标志。它有很多额外的功能,这里没有显示。这只是你替换system()或_spawn()家族所需要的最低限度。

4
4
4
2017-04-16 14:03:20 +0000

你也可以创建一个 AutoHotkey 脚本:

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
3
3
3
2014-09-24 17:58:35 +0000

选择这两个文件,然后用winrar创建一个自解压文件 5.在 “常规 "选项卡中,勾选 "创建自动解压文件 "框 6.在 "高级 "选项卡中选择 "自动解压 "按钮 7.有一个新窗口,选择 "模式 "选项卡,然后选择选项。"选择 "更新 "选项卡,选择 "覆盖现有文件” 8. 选择 “一般 "选项卡,如果你想的话,选择 "一般 "选项卡,然后定义一个目标文件夹,在 "提取后执行 "框中写上你的.bat将被提取的完整路径。例如:如果你将提取文件夹定义为: "c:\windows\",那么提取后的完整路径将是: "c:\windows\file.bat” (如果你的.bat被命名为:file.bat) 10.在所有窗口上点击接受

现在你将会有一个.exe文件,当你点击它并安装后,你的.bat将完全隐藏起来。

2
2
2
2016-01-30 16:44:14 +0000

**在这里添加了我在另一个帖子中的答案,因为它是重复的,而且我在这里没有看到这个解决方案,所以现在有17个不同的答案,关于如何运行一个隐藏的批处理文件。我将在不久的将来的某个时候删除我在那篇帖子上的答案。*

创建你的批处理脚本,里面有你的批处理逻辑和命令,然后创建一个新的以.VBS为扩展名的文件,使用下面的逻辑(我在下面提供的例子),然后只需将你的.CMD.BAT文件的完整路径插入PING -t <IPAddress>等命令,这样它就会在C:\Folder\BatchFileName.cmd文件中执行批处理。在下面的例子中,如果逻辑中指定的是.VBS,那么就把它改成批处理脚本的完整路径,并将其指向你正在手动运行的命令等。

保存Task Scheduler文件,然后用.VBS在windows7上调度任务的问题将其无限期调度运行,以满足你的需求。

否则,只需双击PING文件,运行你在批处理文件中放置的无限期&007命令,你把它指向的批处理文件中的命令按需要运行。

注:*我相信这是我从这个脚本逻辑中得到的,但它的工作原理和你在这里需要的目的是一样的,那就是当批处理文件运行时,确保命令窗口被隐藏服务器故障源

示例VBS SCRIPT RUN COMMAND LINE BATCH HIDING CMD WINDOW

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.cmd" & Chr(34), 0
Set WinScriptHost = Nothing
2
2
2
2012-10-12 07:16:50 +0000

这里**** 我编译了所有我知道的不用外部工具就能启动隐藏进程的方法。

2
2
2
2017-03-09 18:01:08 +0000

尽管我已经回答了这个问题,但这里有另一个方法。你需要两个额外的脚本 - windowMode.batgetCMDPid.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
1
1
1
2011-07-02 09:04:44 +0000

如果你从windows服务中运行批处理文件,除非你在服务上启用 “允许服务与桌面交互 "选项,否则默认情况下,批处理文件应该是隐藏的。

1
1
1
2010-06-14 14:11:34 +0000
cmdow /run /hid "file.extention" arg1 "arg 2"
0
0
0
2018-05-05 10:39:45 +0000

我需要隐藏一个从资源管理器上下文菜单中调用的批处理文件的窗口,还需要在参数上添加引号。没有一个答案对我有效,所以我把自己的解决方案加进去。

我在注册表中的资源管理器上下文菜单的 “命令 "中是这样的:

cmd /c C:\mypath\myprogram.bat "%1"

所以要替换掉它,我必须创建一个像这样的vbs:

WScript.CreateObject ("WScript.shell").run "cmd /c C:\mypath\myprogram.bat """ & WScript.Arguments(0) & """", 0, False

保存在像C:\mypath\myscript.vbs这样的地方,然后在注册表中这样调用:

wscript "C:\mypath\myscript.vbs" "%1"

注意.bat路径不能有空格,所以用8.3文件名替换。因此,例如C:\Program Files\myprogram.bat必须被引用为C:\Progra~1\myprogram.bat。要查看8.3文件名,请使用dir /x

0
0
0
2018-06-21 08:15:59 +0000

我创建了RunApp来做这样的工作,也在我的生产环境中使用,希望对你有帮助。

file: config.arg*

:style:hidden

MyBatchFile.bat
arg1
arg2

并启动runapp.exe代替。

0
0
0
2013-06-07 20:50:58 +0000

我也遇到过同样的问题,但想通了: Shell("filehere" & "parametersforbatchfilehere", vbHidden)

0
0
0
2012-12-17 17:03:50 +0000

我开始试图弄清楚这个问题,但一直没有成功。这是我得到的最接近的结果:

@echo off
if not defined PIL (
    set PIL=1
    start /min "" %~0
    exit /b
)
TITLE Hello World
echo Hello world!
pause>nul
-1
-1
-1
2014-08-15 23:36:30 +0000

这适用于windows 8(可能是其他的)

  1. 创建一个批处理文件
  2. 创建一个批处理文件的快捷方式
  3. 右键点击快捷方式>属性
  4. 点击快捷方式,它会运行,但你不会看到它:)