如何讓批次程式啟動的時候最小化

來源:互聯網
上載者:User

批處理隱藏運行 隱藏批處理本身 複製代碼 代碼如下:@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
::以下為正常批處理命令,不可含有pause set/p等互動命令
××××××××

解釋:
這個是用 mta 的指令碼語言 利用 VBScript 建立了windows 中 wscript.shell該控制項,用這個控制項裡面提供的 run 方法 後台 啟動並執行這個批處理, mst指令碼語言就是相當於 html 應用程式,不管用什麼指令碼語言,只要能建立 windows系統提供的 wscript.shell這個空間,用這個空間裡面的run方法開啟 我們也可以用mta指令碼語言裡面JavaScript一樣能行 @echo off ::批處理隱藏運行 if "%1"=="h" goto begin mshta "javascript:new ActiveXObject('wscript.shell').run('%~nx0 h',0);window.close();"&&exit ::要啟動並執行代碼 :begin echo OK pause>nul mta指令碼語言其實和html語言基本一樣,mta指令碼語言是用mshta程式解析的,html是用瀏覽器解析的(IE) 建議看下html指令碼語言就明白了,這不是用的格式為vbs檔案的那個指令碼語言,vbs指令檔是用wscript解析的 只要記住用 用 mshta vbscript:createobject("外掛程式名")(window.close) 這裡window.close是那個 mshta 本身裡面的方法,就是關閉該程式。 這種格式建立windows提供的外掛程式就行了,外掛程式裡面的方法看下文檔就明白了 關於指令碼語言不明白的地方可以 HI 我

怎麼能夠隱藏批處理的運行視窗

這個不會產生臨時檔案(相容空格路徑的):

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
:begin
rem 下邊開始寫批處代碼了

總結:
將下面任何一句話加在@echo off下面都可以起到隱藏執行的效果,(code標籤後就是要隱藏執行的任務)
兩句代碼的思路相同,實現手段不同.請細細體味:

if "%1"=="h" (goto code) else (mshta vbscript:createobject^("wscript.shell"^).run^("%~fs0 h",0^)^(window.close^)&exit)

if exist #hide.vbs (del #hide.vbs &goto code) else (echo createobject^("wscript.shell"^).run "%~fs0",0 >#hide.vbs&start

#hide.vbs&exit)

這段代碼不會閃提示符出來
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
rem 下邊開始寫批處代碼了
.....

最後一個:
if not "%1"=="h" mshta vbscript:createobject("wscript.shell").run("%~sf0 h %*",0)(window.close)&exit /b
shift /1對我有協助

@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

如何讓批次檔隱藏運行
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
如果雙擊一個批處理,等價於參數為空白,而一些應用程式需要參數,比如在cmd視窗輸入shutdowm -s -t 0,其中-s -t 0就為參數。shutdown為%0,-s為%1,-t為%2,以此類推。
第一行我們先跳過,看第二行,表示利用mshta建立一個vbs程式,內容為:createobject("wscript.shell").run(……).如果啟動並執行批處理名為a.bat,在C:\下,那%0代表C:\a.bat,%~nx0代表a.bat。h極為參數%1,0表示隱藏運行。由於你雙擊運行,故第一次批處理%1為空白,if不成立,轉而運行下一句。然後再次開啟自己,並傳遞參數h,此時if成立,跳轉至begin開始運行。
這兩行很經典,可以使批處理無視窗運行。

另外做個批次程式來調用即將執行的批次檔,
我的方法是: 複製代碼 代碼如下:@echo off
start /min 1.bat

將上面的代碼儲存為: 2.bat

之後將你的批次檔儲存為 1.bat,運行之前先開啟2.bat,則1.bat就最小化運行了.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.