1) 最小化運行批處理方法一:通常javascript
mode con cols=20 lines=1html
if exist "Temp.bat" goto Startjava
>Temp.bat echo start /min "" "%~nx0"^&exitshell
start /min Temp.bat&exitdom
:Startide
del "Temp.bat">nul工具
pause命令行
exitssr
註釋:htm
假設上面內容被保存在「min.bat」文件中
(1)mode con cols=14 lines=1(這一行能夠不要)
設置cmd屏幕緩衝區寬度爲14字符,行數爲1行
(2)>Temp.bat echo start /min "" "%~nx0"^&exit
在當前目錄生成Temp.bat文件,文件內容爲「start /min "" "min.bat"&exit」。「^」爲轉義符,確保可正常把符號「&」寫入到文本文件。「%~nx0」在運行時會由其所在的批處理文件的文件名替換(本例中被替換爲「min.bat」)。
(3)start /min Temp.bat & exit (由這裏開始接下來的命令都在最小化的CMD中執行)
在新的最小化CMD窗口中運行「Temp.bat」並退出一開始運行min.bat的CMD窗口。
(4)Temp.bat最小化調用min.bat
此時Temp.bat已經存在,執行「:Start」行以後的內容。
2) 最小化運行批處理方法二:好
只一行代碼,讓批處理最小化運行本身
if not "%~1"=="p" start /min cmd.exe /c %0 p&exit
加在任意批處理開頭,不過這種代碼很危險,我就忘在%0後加個p,結果。。。!
解釋一下這段代碼的意思:
1.if not "%~1"=="p"——若是此批處理的第一個參數「%~1」不爲「p」,則...
2.start /min cmd.exe /c——最小化執行cmd.exe後關閉(爲何要用cmd.exe來間接執行%0?目的是執行不以exit結束的批也能自動退出)
3.%0 p——批處理自己,帶參數「p」(任意參數便可)
4.&exit——不用解釋了吧!
做用是:最小化運行自身(一次!),本批處理退出,而且不會無限運行!
3)最小化運行批處理方法三:(好)
@echo off&&mode con cols=20 lines=1 (這句最好不要)
%1 %2
start /min /i "" "%~nx0" goto min&&goto :eof
:min
Rem 下面寫代碼
批處理隱藏窗口運行的幾種方法:
若是要隱藏執行批處理的話,批處理程序中不能包含set /p、pause等交互命令,不然批處理沒法執行完整!
1) 隱藏窗口運行批處理方法一:最好,支持內存系統
@echo off
if "%1" neq "1" (
>"%temp%\tmp.vbs" echo set WshShell = WScript.CreateObject^(^"WScript.Shell^"^)
>>"%temp%\tmp.vbs" echo WshShell.Run chr^(34^) ^& %0 ^& chr^(34^) ^& ^" 1^",0
start /d "%temp%" tmp.vbs
exit
)
::從這裏開始,就是你的批處理代碼了,DOS黑框一閃而過,轉到後臺運行了
pause
::你會在任務管理器看到有一個隱藏窗口的CMD進程
2) 隱藏窗口運行批處理方法二:通常
運行bat時隱藏cmd窗口的方法 能夠編輯一個vbs腳本,在其中以隱藏窗口運行批處理程序。
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c 批處理程序名",vbhide
將上面代碼拷貝到記事本中,保存爲"runbat.vbs"或者其它的名字(擴展名必須是.vbs),而後點擊運行生成的腳本runbat.vbs,便可隱藏運行指定的批處理程序。
這個vbs腳本也能夠在bat環境中直接調用,達到隱藏bat自身的目的。
3) 隱藏窗口運行批處理方法三:通常
Set ws = CreateObject("Wscript.Shell")
wscript.sleep 1200 ws.run "cmd /c start winrar.exe",vbhide
wscript.sleep 2200 ws.run "cmd /c start msimn.exe",vbhide
wscript.sleep 1200 ws.run "cmd /c start iexplore.exe",vbhide
4) 隱藏窗口運行批處理方法四:
缺點:會看到一個窗口一閃而逝。優勢:簡單,直接添加便可。
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
::如下爲正常批處理命令,不可含有pause set/p等交互命令
pause
5) 隱藏窗口運行批處理方法五:
缺點:調用麻煩點。優勢:基本看不到痕跡(非絕對的,指通常用戶)
HideRun.vbs
CreateObject("WScript.Shell").Run "cmd /c D:/test.bat",0
其中D:/test.bat是你的批處理路徑
另外一思路爲把bat轉換成vbs,而後vbs生成一個臨時bat文件,而後WScript.Shell.Run隱藏啓動這個臨時bat。
HideRun.bat
echo CreateObject("WScript.Shell").Run "cmd /c D:/test.bat",0>$tmp.vbs
cscript.exe /e:vbscript $tmp.vbs
del $tmp.vbs
這個批處理其實不能使其批處理自己隱藏,可是下面大部分隱藏調用批處理的原理和基礎。
HideRun.js
new ActiveXObject('WScript.Shell').Run('cmd /c D:/Test.bat',0);
用Javascript有什麼好處呢?js的字符串變量能夠用單引號,從而方便命令行做爲參數調用,並且js很好的支持多行語句用 ; 分隔寫成一行。要注意的是:js要區分大小寫,方法
必須用括號,結尾必須有分號。因此就成了下面的命令:
mshta "javascript:new ActiveXObject('WScript.Shell').Run('cmd /c D:/test.bat',0);window.close()"
一般系統管理員會向用戶端推送一些腳本並運行,或者拷貝批處理文件到客戶端由用戶本身運行。可是大部分腳本在運行時會彈出黑色背景的DOS窗口,這會讓很多用戶不知所措,甚至誤操做關閉正在運行的窗口。好在批處理文件的DOS窗口是能夠隱藏的。
6)隱藏窗口運行批處理方法六:
用快捷方式,若是要使一個批處理自己隱藏,能夠建立一個bat的快捷方式而後修改快捷方式中的相關路徑便可隱藏啓動你的批處理。能夠用vbs來創建一個 .lnk,其實用批處理也行(先echo一個
vbs出來)
7) 隱藏窗口運行批處理方法七:
利用系統服務,能夠創建一個系統服務而後啓動這個服務來啓動批處理。缺點是啓動服務較慢,須要管理員權限
runassrv add /cmdline:"C:/Windows/System32/cmd.exe /c D:/test.bat" /name:"mysrv"
net start mysrv
隱藏窗口運行批處理方法八:
利用at計劃任務,用at能夠創建一個計劃任務,在不輸入 /interactive 參數能夠後臺運行。可是建使用at必須有管理員權限
at 09:10 "cmd /c D:/Test.bat"
而後在 9:10 系統就會自動後臺以SYSTEM權限運行這個bat
9) 隱藏窗口運行批處理方法九:
利用ftype文件關聯
ftype batfile=C:/Windows/System32/mshta "javascript:new ActiveXObject('WScript.Shell').Run('cmd /c%1',0);window.close();"
10) 隱藏窗口運行批處理方法十:
編譯成可執行文件,很多方法能夠實現,能夠直接利用的工具備bat2exe,百度搜索一大把。
窗口大小定義:
語法格式:
MODE con: COLS=[窗口寬度] LINES=[窗口高度]
窗口寬度取值:≥20,高度取值:1≤h≤300
示例:
MODE con: COLS=35 LINES=17
代碼:
@echo off&setlocal enabledelayedexpansion
set "b=0123456789abcdef"&set "f=0123456789abcdef"&set /a r=%random%%%16&set /a s=%random%%%16
color !f:~%s%,1!!b:~%r%,1!
::下面寫代碼
教程完畢,講到這兒,想必你們對批處理也都已經很是地熟悉了,批處理更多強大的你也可以挖掘出來了,整裝待發,盡情的遨遊在批處理的海洋裏吧!