題 以完全隱藏的方式運行批處理文件


我正在尋找一些方法來運行批處理文件(.bat)而沒有任何對用戶可見的東西(沒有窗口,沒有任務欄名稱,.etc ..)。

我不想使用某些程序來做到這一點,我正在尋找更清潔的東西。我發現了 一個辦法 使用VBScript,但我也不喜歡使用VBS。


115
2017-10-29 12:42


起源


哈哈!當然不。我正在開發一個Windows服務,它將不時運行批處理文件。 - Moayad Mardini
Windows服務不作為批處理文件運行。它們作為服務運行。你需要澄清這個問題 - 如同書面和評論一樣,這對我來說毫無意義。 - CarlF
我有一個運行批處理文件的Windows服務。並非該服務是批處理文件。 - Moayad Mardini
你在用什麼語言寫作? - Hugh Allen
還有hstart。 - barlop


答案:


解決方案1: 

將此一行文本另存為文件 invisible.vbs

CreateObject(“Wscript.Shell”)。運行“”“”   &WScript.Arguments(0)&“”“”,0,   假

要無形地運行任何程序或批處理文件,請像這樣使用它:

WScript.exe的   “C:\ Wherever \ invisible.vbs”“C:\有些   其他Place \ MyBatchFile.bat“

為了能夠傳遞/中繼參數列表,只使用兩個雙引號

CreateObject(“Wscript.Shell”)。運行“”   &WScript.Arguments(0)&“”,0,   假

例: Invisible.vbs "Kill.vbs ME.exe"

解決方案2:

使用命令行工具以靜默方式啟動進程: 安靜hidecon 要么 hideexec


97
2017-10-29 16:29



為什麼4個雙引號,你能解釋一下嗎? - Starx
如果我們需要啟動隱藏的程序怎麼辦? - Starx
@Starx VB語法。 & 意味著連接字符串。字符串用雙引號括起來(")。連續雙引號("")字符串分隔符表示文字雙引號(")。所以,四個雙引號("""")將是一個字符的字符串文字,雙引號(")。把它放在一起,然後 """" & WScript.Arguments(0) & """" 會成為 "<argument>",哪裡 <argument> 是傳遞給腳本的第一個命令行參數。 - Bob
如何修改它以便傳遞所有參數?傳遞參數而不引用它們會更方便。 - Ctrl-C
這不是仍然需要您創建一個批處理文件來放置 wscript.exe "C:\Wherever\invisible.vbs" ... 代替? - endolith


隱藏批處理文件或命令文件或任何文件....使用內置的Windows XP IExpress.exe 用於從批處理文件中構建.EXE的實用程序。使用時 IExpress 確保檢查運行隱藏選項並選中標記所有未顯示任何內容的框。創建.exe後,將它放在您選擇的任何運行命令文件夾中,您將永遠不會看到它。


25
2018-06-29 21:06



哦,實際上很好的解決方案 - Camilo Martin
在Windows 7等較新的Windows版本中有沒有相當於lexpress.exe的東西? - Sнаđошƒаӽ
@Sнаđошƒаӽ它是在Windows 7中......剛剛測試過它 - DarthRubik
@DarthRubik感謝分享。我也測試了它,它工作得很好。是時候提出答案了。 :) - Sнаđошƒаӽ
這似乎不適用於Windows 10 64,因為“Command.com”似乎不再存在 - Arne S


使用 Cmdow 是NT4 / 2000 / XP / 2003的Win32命令行實用程序,它允許列出,移動,調整大小,重命名,隱藏/取消隱藏,禁用/啟用,最小化,最大化,恢復,激活/停用,關閉,終止等等窗口。

運行批處理文件隱藏傳遞它的參數: -

cmdow / run / hid mybat arg1“arg 2”


8
2017-10-29 12:48



但是我該怎麼運行這個命令呢? - Moayad Mardini
大多數防病毒產品都會將cmdow檢測為惡意軟件。因此,在您自己的PC以外的地方使用此解決方案將很困難。 - Ganesh R.
@Ganesh:有更好的解決方案嗎? - Moayad Mardini
它是開源的嗎?使用不是開源的第三方應用程序是沒有意義的,當你可以通過運行harrymc的1行vbscript做同樣的事情時可以打包木馬(參見他在線程的頂部回答)。 - thebunnyrules
嗯,它是開源的,所以非常棒。可以在這裡獲取源代碼: github.com/ritchielawrence/cmdow - thebunnyrules


通過at作業運行腳本而不使其具有交互性:

at 11:00 script.bat

另一個解決方案,如果你不介意安裝類似Python的東西,你可以簡單地創建一個腳本並運行它 pythonw (GUI操作的鏈接版本)。由於您沒有使用任何圖形API,因此窗口不會顯示。只需使用電話 os.system() 它將模仿批處理腳本,因為它與在命令行中鍵入字符串相同。

例:

import os

os.system("tasklist > C:\tasks.txt")
os.system("ipconfig /all > C:\netinfo.log")

7
2017-10-29 12:49



但是我該怎麼運行這個命令呢? - Moayad Mardini
您必須安排計劃任務或編寫服務。 - Unfundednut
示例補充說。 - John T


如果批處理文件可以放入一行和多個字符,那麼只需在放入隨機目錄的文件夾中右鍵單擊即可使用快捷方式,然後跳過嚮導的其餘部分,最後右鍵單擊剛剛創建的快捷方式,單擊屬性並在目標下,輸入您通常放在bat文件中的內容。和你的叔叔一樣!

優點:

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

缺點:

 Limited to one line, so many characters

7
2018-01-13 03:36



唯一的問題是您無法將文件類型與快捷方式相關聯。因此,如果要通過在資源管理器中雙擊批處理腳本來打開它,則仍需要.bat文件。 - Björn Lindqvist
我還在努力尋找鮑勃叔叔,到處都是! - Pimp Juice IT


使用Windows7,您可以使用“計劃任務”控制面板來安排批處理文件在後台運行,並使用指定的權限進行隱藏,甚至可以作為“SYSTEM”帳戶。見下面的截圖:

enter image description here 

此外,雖然功能不多,但您也可以使用“AT.exe”命令從命令行創建這樣的不可見批處理腳本任務,而不使用“/ interactive”選項。


5
2018-01-09 20:57



隱藏的複選框只是從任務計劃程序用戶界面隱藏任務( - Sourav Ghosh
當一個任務不需要“系統”權限(並且沒有因為安全漏洞而被審查,並且變硬)作為一個壞主意時,將任務作為“SYSTEM”運行;看到 這裡的評論。 - Scott


您可以輕鬆地將其最小化。

start /MIN batch.cmd

4
2017-10-29 15:54



或者用/ B代替! - rany


我不喜歡VBScript解決方案。

下載並複制 nircmd.exe 到你的 %systemroot%\system32 文件夾,然後將此命令添加到批處理的第一行:

nircmd.exe win hide ititle "cmd.exe"

或者首先使用自定義批量標題 title 命令,以避免隱藏所有 cmd 窗戶,像這樣:

title MyBatch
nircmd.exe win hide ititle "MyBatch"

4
2018-05-12 08:25



我使用這個確切的方法,但有一段時間nircmd沒有隱藏cmd窗口失敗,只是最小化到任務欄,並且無法通過點擊它來恢復。不知道為什麼...... - James Yang


似乎有人列出了7-8種運行'無聲'的方法:

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


3
2018-01-26 19:38



請在此處列出,不要在其他地方發布只是鏈接的答案。 - endolith