
在批處理文件輸出一個(gè)彈窗,但是不會(huì)在任務(wù)欄顯示請(qǐng)問(wèn)下這個(gè)還有什么需要修改/縮減/優(yōu)化的嗎?(弄這個(gè)的我到底有多閑)exe是用Bat_To_Exe_Converter 生成的將CmdMsgbox_install.bat生成exe時(shí)注意打包CmdMsgBox.exe,且勾選工作目錄為臨時(shí)目錄[attach]10643[/attach]主程序exe下載[attach]10644[/attach]安裝版exe下載CmdMsgBox Code
CmdMsgbox_install Codenclick="copycode($('code0'));">復(fù)制代碼
- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- :hta Cmd MsgBox
- ::
- :: 作者:Neko Piao, -05-21. 版本 %CmdMsgBoxver%
- ::
- :: 功能:在批處理文件輸出一個(gè)彈窗,但是不會(huì)在任務(wù)欄顯示
- :: 僅測(cè)試于 Win10.
- ::
- :: 參數(shù):%1~%9 輸出的內(nèi)容(最后一個(gè)為標(biāo)題)
- ::
- :: 第一個(gè)參數(shù)為-? 則顯示幫助
- ::
- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- @echo off
- if /i not %~nx0==CmdMsgbox.exe (echo 請(qǐng)將%~nx0重命名為CmdMsgbox.exe再執(zhí)行&echo 按任意鍵退出&pause>nul&exit)
- set CmdMsgBoxver=1.170524.0109
- setlocal ENABLEEXTENSIONS
- set parameter0=0
- set parameter1=%1
- set parameter2=%2
- set parameter3=%3
- set parameter4=%4
- set parameter5=%5
- set parameter6=%6
- set parameter7=%7
- set parameter8=%8
- set parameter9=%9
- set str=%parameter1%
- if defined str (
- set /a parameter0=%parameter0%+1
- ) else (goto:keeptoPrt01)
- set str=%parameter2%
- if defined str (
- set /a parameter0=%parameter0%+1
- ) else (goto:keeptoPrt01)
- set str=%parameter3%
- if defined str (
- set /a parameter0=%parameter0%+1
- ) else (goto:keeptoPrt01)
- set str=%parameter4%
- if defined str (
- set /a parameter0=%parameter0%+1
- ) else (goto:keeptoPrt01)
- set str=%parameter5%
- if defined str (
- set /a parameter0=%parameter0%+1
- ) else (goto:keeptoPrt01)
- set str=%parameter6%
- if defined str (
- set /a parameter0=%parameter0%+1
- ) else (goto:keeptoPrt01)
- set str=%parameter7%
- if defined str (
- set /a parameter0=%parameter0%+1
- ) else (goto:keeptoPrt01)
- set str=%parameter8%
- if defined str (
- set /a parameter0=%parameter0%+1
- ) else (goto:keeptoPrt01)
- set str=%parameter9%
- if defined str (
- set /a parameter0=%parameter0%+1
- ) else (goto:keeptoPrt01)
- :keeptoPrt01
- if %parameter1%==-? (GOTO:TheHelp)
- if %parameter1%== (GOTO:vermsg)
- if /i %parameter1%==vernum (GOTO:vernum) else (goto:TheStart)
- :vernum
- Echo %CmdMsgBoxver%
- goto:TheEnd
- :vermsg
- Echo.Cmd Msgbox [版本 %CmdMsgBoxver%]
- Echo.BY:Neko Piao 保留所有權(quán)利。
- goto:TheEnd
- :TheHelp
- Echo. 彈窗提示消息,同時(shí)暫停
- Echo. 最后一個(gè)參數(shù)自動(dòng)將成為彈窗標(biāo)題
- Echo.
- Echo. %~n0 [Msg1] [Msg2] ......
- Echo.
- Echo. 例:
- Echo.%~n0 第一行 第二行 標(biāo)題
- Echo.
- Echo. 注:因技術(shù)原因,第一個(gè)變量
- Echo. 即第一行不可包含空格或其他可能產(chǎn)生bug的字符
- Echo. 但除去第一行以外的都[應(yīng)該]可以使用各種字符.
- Echo.少部分沖突字符依然不可用.
- Echo.
- Echo.
- Echo. 若要顯示當(dāng)前CmdMsgBox版本信息,請(qǐng)鍵入不帶參數(shù)的 CmdMsgBox
- goto:eof
- :TheStart
- set inoutfiletimename=%time:~0,2%.%time:~3,1%%time:~4,1%.%time:~6,1%%time:~7,1%.%time:~9,1%%time:~10,1%
- Echo.^<html^>>%temp%CmdMsgbox_%inoutfiletimename%.hta
- Echo.^<head^>>>%temp%CmdMsgbox_%inoutfiletimename%.hta
- Echo.^<title^>%temp%CmdMsgbox_%inoutfiletimename%.hta^</title^>>>%temp%CmdMsgbox_%inoutfiletimename%.hta
- Echo.^<script type=text/vbscript^>>>%temp%CmdMsgbox_%inoutfiletimename%.hta
- ::核心部分
- ::彈窗語(yǔ)句輸出判斷
- ::利用用戶輸入的參數(shù)判斷剩余信息的讀取
- Set parameter_num_sum=%parameter0%
- set parametertemp=0
- :Start
- ::輸出語(yǔ)句小于最大語(yǔ)句標(biāo)簽數(shù)
- if %parametertemp% LSS %parameter_num_sum% (set /a parametertemp=%parametertemp%+1) else (goto:parameterEnd)
- set parametermsgtemp=parameter%parametertemp%
- call:%parametermsgtemp%
- goto:Start
- :parameter1
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=MSGBox <nul
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=%parameter1% <nul
- goto:eof
- :parameter2
- Call:TitleaEQU
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=%parameter2% <nul
- goto:eof
- :parameter3
- Call:TitleaEQU
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=%parameter3% <nul
- goto:eof
- :parameter4
- Call:TitleaEQU
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=%parameter4% <nul
- goto:eof
- :parameter5
- Call:TitleaEQU
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=%parameter5% <nul
- goto:eof
- :parameter6
- Call:TitleaEQU
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=%parameter6% <nul
- goto:eof
- :parameter7
- Call:TitleaEQU
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=%parameter7% <nul
- goto:eof
- :parameter8
- Call:TitleaEQU
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=%parameter8% <nul
- goto:eof
- :parameter9
- Call:TitleaEQU
- >>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=%parameter9% <nul
- goto:eof
- :TitleaEQU
- if %parametertemp% EQU %parameter_num_sum% (>>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p=,16+0, <nul )
- if %parametertemp% LSS %parameter_num_sum% (>>%temp%CmdMsgbox_%inoutfiletimename%.hta set /p= & vbCrLf & <nul )
- goto:eof
- :parameterEnd
- Echo.>>%temp%CmdMsgbox_%inoutfiletimename%.hta
- Echo.self.close()>>%temp%CmdMsgbox_%inoutfiletimename%.hta
- Echo.^</script^>>>%temp%CmdMsgbox_%inoutfiletimename%.hta
- Echo.^</head^>>>%temp%CmdMsgbox_%inoutfiletimename%.hta
- Echo.^</html^>>>%temp%CmdMsgbox_%inoutfiletimename%.hta && Call %temp%CmdMsgbox_%inoutfiletimename%.hta
- Del %temp%CmdMsgbox_%inoutfiletimename%.hta
- endlocal
- goto:EOF
- :TheEnd
- endlocal & goto:EOF
- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
nclick="copycode($('code1'));">復(fù)制代碼
- @echo off
- ::call:UAC_Check
- Call:installverload
- Call:installnamecheck
- Call:firstinstallcheck
- Call:Sysverload
- Call:installver_or_Sysver_check
- Call:userselect
- exit
- ::名稱檢查
- :installnamecheck
- ::if not %~nx0==CmdMsgbox_install_%instaver01%.%instaver02%.%instaver03%.exe (echo 請(qǐng)將%~nx0重命名為CmdMsgbox_install_%instaver01%.%instaver02%.%instaver03%.exe再執(zhí)行&echo 按任意鍵退出&pause>nul&exit) else (echo.)
- echo 您正在安裝CmdMsgbox %instaver01%.%instaver02%.%instaver03%
- goto:eof
- :firstinstallcheck
- ::當(dāng)磁盤(pán)不存在,則安裝,否則檢查版本后安裝
- if not exist %ComSpec:~0,-7%CmdMsgbox.exe (call:install&call:installcheck&exit)
- goto:eof
- :installverload
- if not exist .CmdMsgbox.exe echo 沒(méi)有找到安裝文件,按任意鍵退出.&pause>nul&exit
- for /f tokens=1-3 delims=. %%a in ('.CmdMsgbox verNum') do (
- set instaver01=%%a
- set instaver02=%%b
- set instaver03=%%c
- )
- set instaver00=%instaver01%%instaver02%%instaver03%
- goto:eof
- :Sysverload
- for /f tokens=1-3 delims=. %%a in ('%ComSpec:~0,-7%CmdMsgbox verNum') do (
- set SysCmdMsgboxver=%%a%%b%%c
- set SysCmdMsgboxver01=%%a
- set SysCmdMsgboxver02=%%b
- set SysCmdMsgboxver03=%%c
- )
- goto:eof
- :installver_or_Sysver_check
- ::如果安裝版本大于則直接覆蓋安裝
- if %instaver00% GTR %SysCmdMsgboxver% (call:install&call:installcheck&exit)
- if %instaver00% EQU %SysCmdMsgboxver% (call:uninstallselect&exit)
- goto:eof
- :userselect
- cls
- ECHO 您要安裝的版本%instaver01%.%instaver02%.%instaver03%低于現(xiàn)有版本%SysCmdMsgboxver01%.%SysCmdMsgboxver02%.%SysCmdMsgboxver03%
- echo 是否繼續(xù)?(Y/N)
- set /p YN=
- if /i %YN%==Y (del %ComSpec:~0,-7%CmdMsgbox.exe&call:install&call:installcheck&exit)
- if /i %YN%==N (CmdMsgbox 2 用戶取消 安裝失敗&exit) else (cls&echo 輸入有誤,請(qǐng)重新輸入&goto:userselect)
- goto:eof
- :install
- move CmdMsgbox.exe %ComSpec:~0,-7% >nul 2>nul
- goto:eof
- :installcheck
- if not exist %ComSpec:~0,-7%CmdMsgbox.exe (Echo.安裝失敗,拷貝進(jìn)程未如預(yù)期進(jìn)行 &Echo. 按任意鍵退出&pause>nul&exit)
- set SysCmdMsgboxverlast=%SysCmdMsgboxver01%.%SysCmdMsgboxver02%.%SysCmdMsgboxver03%
- call:Sysverload
- set SysCmdMsgboxvernow=%instaver01%.%instaver02%.%instaver03%
- echo 安裝成功,請(qǐng)查看彈窗,點(diǎn)擊確認(rèn)以完成安裝.
- CmdMsgbox 安裝成功 之前版本:%SysCmdMsgboxverlast% 現(xiàn)在版本:%SysCmdMsgboxvernow% 請(qǐng)?jiān)贑md中輸入[CmdMsgbox -?]查看使用幫助 安裝成功
- exit
- goto:eof
- :uninstallselect
- set UninstallCode=Uninstall%random%%random%%random%%random%%random%%random%%random%%random%%random%
- echo %UninstallCode:~1%| clip
- cls
- ECHO 您要&echo.安裝的版本%instaver01%.%instaver02%.%instaver03%&echo.&echo. 等于 ^|^|&echo.&echo 現(xiàn)有版本%SysCmdMsgboxver01%.%SysCmdMsgboxver02%.%SysCmdMsgboxver03%&echo ----------------------------------------------------------------------
- echo 繼續(xù)安裝請(qǐng)輸入[R]
- echo 退出安裝請(qǐng)輸入[Q]
- echo 刪除安裝請(qǐng)輸入[%UninstallCode%]
- set /p RQU=
- if /i %RQU%==R (del %ComSpec:~0,-7%CmdMsgbox.exe&call:install&call:installcheck&exit)
- if /i %RQU%==Q (CmdMsgbox 2 用戶取消 安裝失敗&exit)
- if /i %RQU%==%UninstallCode% (call:uninstall&exit) else (cls&echo 輸入有誤,請(qǐng)重新輸入&goto:uninstallselect)
- goto:eof
- :uninstall
- call:Sysverload
- del %ComSpec:~0,-7%CmdMsgbox.exe
- if not exist %ComSpec:~0,-7%CmdMsgbox.exe(
- .CmdMsgbox 刪除成功 CmdMsgbox %SysCmdMsgboxver01%.%SysCmdMsgboxver02%.%SysCmdMsgboxver03%已從您的系統(tǒng)文件中移除 刪除成功 & exit
- ) else (
- CmdMsgbox 未預(yù)期錯(cuò)誤:刪除失敗 建議重啟再試 或重啟后手動(dòng)至%ComSpec:~0,-7%目錄刪除CmdMsgbox.exe 刪除失敗 & exit
- )
- goto:eof
- :UAC_Check
- Rem 創(chuàng)建文件路徑
- set TempFile_Name=%SystemRoot%System32BatTestUACin_SysRt%Random%.batemp
- Rem 寫(xiě)入文件
- ( echo BAT Test UAC in Temp >%TempFile_Name% ) 1>nul 2>nul
- Rem 判斷寫(xiě)入是否成功
- if exist %TempFile_Name% (
- echo 正在以管理員身份運(yùn)行
- ) else (
- echo 請(qǐng)以管理員身份重新啟動(dòng),按任意鍵退出&pause>nul&exit
- )
- Rem 刪除臨時(shí)文件
- del %TempFile_Name% 1>nul 2>nul
- goto:eof

