一,隱藏命令窗口
當我們運行bat腳本的時候,彈出CMD窗口。如果要隱藏窗口可以在bat腳本開頭處寫一下代碼:
@echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin REM
二,以管理員身份運行
如何始終以管理員身份運行bat文件?
其實很簡單,只需要新建一個bat文件,填入以下代碼后運行即可:
@echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) ::下面寫你的腳本
三,下載功能
調用Download Wscript.Arguments的vbs腳本來實現下載
@echo off & title Bat+Vbs 下載器 By 熊仔其人 ::設置要下載的文件鏈接,僅支持http協議。必寫項。 set Url=https://wdl1.cache.wps.cn/wps/download/W.P.S.8919.12012.2019.exe ::設置文件保存目錄,若下載至當前目錄,請留空 set Save=D:\document if exist %Save% (echo 位置:%Save%) else (mkdir %Save% & echo 已創建:%Save%) for %%a in ("%Url%") do set "FileName=%%~nxa" if not defined Save set "Save=%cd%" (echo Download Wscript.Arguments^(0^),Wscript.Arguments^(1^) echo Sub Download^(url,target^) echo Const adTypeBinary = 1 echo Const adSaveCreateOverWrite = 2 echo Dim http,ado echo Set http = CreateObject^("Msxml2.ServerXMLHTTP"^) echo http.open "GET",url,False echo http.send echo Set ado = createobject^("Adodb.Stream"^) echo ado.Type = adTypeBinary echo ado.Open echo ado.Write http.responseBody echo ado.SaveToFile target echo ado.Close echo End Sub)>DownloadFile.vbs DownloadFile.vbs "%Url%" "%Save%\%FileName%" ::下載完刪除生成的vbs文件 del DownloadFile.vbs
四,靜默安裝
靜默安裝軟件
1.installshield型:
installshield是一款商業級別的安裝程序封裝工具,許多大型商業軟件都用它進行封裝.例如:macromedia flash. pgtoshop等
安裝參數:-R 用於記錄安裝過程
-s 用於進行軟件的自動安裝
-f1 指定setup.iss應答文件的路徑
使用方法:
1).先用在命令行下用-R參數進行軟件的安裝,其安裝過程與正常安裝沒有本質的區別,但在軟件安裝結束后可以在 c:\windows(winxp系統)或c:\winnt(win2k系統)目錄下找到一個名為setup.iss的文件,它就是我們后面要用到的可以進行自動安裝的重要應答文件.
2).將以上的setup.iss文件與你的安裝程序放在同一目錄下,利用-s參數進行全自動安裝.
例如: start /wait x:\phtoshop\setup.exe -s -f1 "y:\setup.iss"(如果setup.iss文件與安裝程序在同一目錄,可以省去-f1參數)
2.Inno setup 類型:
Inno setup 是一款完全免費的安裝程序封裝工具,其功能和穩定性均可與商業封裝工具媲美.
安裝參數: /silent(/verysilent) 用於軟件的自動安裝
sp- 用於跳過安裝程序的確認界面
使用方法: start /wait x:\thunder5.exe /verysilent sp-
說明:此安裝參數的使用比較容易,但如果我們把它寫入到批處理文件中進行大量的軟件安裝時,有的軟件會在安裝完成后自行啟動,比如迅雷,為不影響系統性能,我們可以結合其他的命令終止其進程,例如:
復制代碼 代碼如下:
@echo off
start /wait x:\thunder5.exe /verysilent sp-
echo.
taskkill.exe /F /IM Thunder5.exe
3.Microsoft Windows Installer技術打包程序
微軟自家產品,許多軟件生產廠家現在都選擇這種基於微軟開發的封裝方式
參數:/ /QB(/QN)用於自動安裝軟件
/REBOOT=suppress 安裝后不重起
使用方法: start /wait x:\setup.exe /QB REBOOT=Suppress
4.Nullsoft SuperRMP Install System (NSIS)類型,例如:winamp
使用參數: /S 用於自動安裝軟件
例如: x:\winamp\setup.exe /S
說明:此類軟件安裝后會給出一個文件關聯確認窗口,目前無法跳過,但我可以給大家一個思路,就是結合VBS腳本中的Doskey命令來模仿鍵盤動作實現確認過程,到現在為止我個人還沒有寫出來,望高手幫忙完善
二.測試方法與安裝類型分析:
1.測試方法:可以用目前比較流行的虛擬機進行測試
2.安裝類型分析:大部分安裝程序可以通過鼠標右擊安裝程序___選擇屬性 ________版本來查看其封裝類
五,Windows啟動目錄
Windows啟動目錄
WinXP: C:/Documents and Settings/Administrator/「開始」菜單/程序/啟動 Win7: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup Win10: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 所有用戶通用啟動目錄: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
總結上面的知識點,寫成幾個demo:
示例一:
@echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin @echo off & WPS下載器 ::設置要下載的文件鏈接,僅支持http協議。必寫項。 set Url=https://wdl1.cache.wps.cn/wps/download/W.P.S.8919.12012.2019.exe ::設置文件保存目錄,若下載至當前目錄,請留空 set Save=D:\document if exist %Save% (echo 位置:%Save%) else (mkdir %Save% & echo 已創建:%Save%) for %%a in ("%Url%") do set "FileName=%%~nxa" if not defined Save set "Save=%cd%" (echo Download Wscript.Arguments^(0^),Wscript.Arguments^(1^) echo Sub Download^(url,target^) echo Const adTypeBinary = 1 echo Const adSaveCreateOverWrite = 2 echo Dim http,ado echo Set http = CreateObject^("Msxml2.ServerXMLHTTP"^) echo http.open "GET",url,False echo http.send echo Set ado = createobject^("Adodb.Stream"^) echo ado.Type = adTypeBinary echo ado.Open echo ado.Write http.responseBody echo ado.SaveToFile target echo ado.Close echo End Sub)>DownloadFile.vbs DownloadFile.vbs "%Url%" "%Save%\%FileName%" del DownloadFile.vbs if exist "%Save%\%FileName%" (echo 位置:"%Save%\%FileName%" & start /wait "" "%Save%\%FileName%" /QB REBOOT=Suppress & pause >nul ) else (echo "%Save%\%FileName%"文件不存在)
新建記事本,復制代碼粘貼到記事本,保存為“靜默下載並安裝.bat”
示例二:
:: 熊仔其人,始終以管理員身份運行 @echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) @echo off & WPS下載器 ::設置要下載的文件鏈接,僅支持http協議。必寫項。 set Url=https://wdl1.cache.wps.cn/wps/download/W.P.S.8919.12012.2019.exe ::設置文件保存目錄,若下載至當前目錄,請留空 set Save=C:\ if exist %Save% (echo 位置:%Save%) else (mkdir %Save% & echo 已創建:%Save%) for %%a in ("%Url%") do set "FileName=%%~nxa" if not defined Save set "Save=%cd%" (if exist "%Save%\%FileName%" (goto beginInstall) echo Download Wscript.Arguments^(0^),Wscript.Arguments^(1^) echo Sub Download^(url,target^) echo Const adTypeBinary = 1 echo Const adSaveCreateOverWrite = 2 echo Dim http,ado echo Set http = CreateObject^("Msxml2.ServerXMLHTTP"^) echo http.open "GET",url,False echo http.send echo Set ado = createobject^("Adodb.Stream"^) echo ado.Type = adTypeBinary echo ado.Open echo ado.Write http.responseBody echo ado.SaveToFile target echo ado.Close echo End Sub)>DownloadFile.vbs if exist "%Save%\%FileName%" (echo 位置:%Save%\%FileName% & goto beginInstall) else (echo 下載:%FileName% 請等待) DownloadFile.vbs "%Url%" "%Save%\%FileName%" ::del DownloadFile.vbs :beginInstall del DownloadFile.vbs if exist "%Save%\%FileName%" (echo 安裝:%Save%\%FileName% 請稍等,可能需要您手動確認安裝 & start /wait "" "%Save%\%FileName%" /verysilent sp- & exit ) else (echo 異常:%Save%\%FileName% 文件不存在或被損壞!)
與上一個腳本不同的是,如果這一個腳本會覆蓋舊文件,即下載目錄下存在已下載過的同名文件會覆蓋,因此該腳本可以重復執行。執行成功后自動退出。
示例三:
:: 熊仔其人,始終以管理員身份運行 @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin REM @echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) @echo off & WPS下載器 ::設置要下載的文件鏈接,僅支持http協議。必寫項。 set Url=https://wdl1.cache.wps.cn/wps/download/W.P.S.8919.12012.2019.exe ::設置文件保存目錄,若下載至當前目錄,請留空 set Save=C:\ if exist %Save% (echo 位置:%Save%) else (mkdir %Save% & echo 已創建:%Save%) for %%a in ("%Url%") do set "FileName=%%~nxa" if not defined Save set "Save=%cd%" (if exist "%Save%\%FileName%" (goto beginInstall) echo Download Wscript.Arguments^(0^),Wscript.Arguments^(1^) echo Sub Download^(url,target^) echo Const adTypeBinary = 1 echo Const adSaveCreateOverWrite = 2 echo Dim http,ado echo Set http = CreateObject^("Msxml2.ServerXMLHTTP"^) echo http.open "GET",url,False echo http.send echo Set ado = createobject^("Adodb.Stream"^) echo ado.Type = adTypeBinary echo ado.Open echo ado.Write http.responseBody echo ado.SaveToFile target echo ado.Close echo End Sub)>DownloadFile.vbs if exist "%Save%\%FileName%" (echo 位置:%Save%\%FileName% & goto beginInstall) else (echo 下載:%FileName% 請等待) DownloadFile.vbs "%Url%" "%Save%\%FileName%" ::del DownloadFile.vbs :beginInstall del DownloadFile.vbs if exist "%Save%\%FileName%" (echo 安裝:%Save%\%FileName% 請稍等,可能需要您手動確認安裝 & start /wait "" "%Save%\%FileName%" /verysilent sp- & exit ) else (echo 異常:%Save%\%FileName% 文件不存在或被損壞!)
在前面兩個案例的基礎上,增加了隱藏命令窗口的功能,即執行腳本的過程對於用戶來說不可見。不過雙擊執行的時候窗口還是會閃一下。