我们知道 DOS 下的批处理程序中 可以用 ECHO 显示一段信息(提示信息或出错信息) 对于要接收用户输入的情况 MS DOS 本身提供的外部程序就只有 CHOICE 能让用户输入一个键 所以基本上只能用于菜单选择 对于下述两个需求 那就只有另外编程序了 .在 DOS 下的批处理程序中通过 WINDOWS 对话框显示一段提示信息或出错信息 .在 DOS 下的批处理程序中通过 WINDOWS 对话框接收用户输入的一个字符串 并对其进行后续处理
对于这两个问题 相信有些人已经有了一些解决方案 在此我提出我的解决方案 是用 DELPHI 写的程序(这些DELPHI程序都是没有 FORM 和 PAS文件的) 我觉得比较简单 作为抛砖引玉
显示提示信息 SHOWMSG DPR program ShowMsguses Windows{$R * RES} begin if ParamCount <then begin MessageBox( 用Windows对话框显示信息 # # + 用法: ShowMsg 提示信息 对话框标题 用法说明 MB_ICONINFORMATION)HaltendMessageBox( PChar(ParamStr( )) Pchar(ParamStr( )) MB_OK)Haltend
显示出错信息 EmsgDlg DPR program EmsgDlguses Windows{$R * RES} begin if ParamCount <then begin MessageBox( 用Windows对话框显示出错信息 # # + 用法: EmsgDlg 出错信息 对话框标题 用法说明 MB_ICONINFORMATION)HaltendMessageBox( PChar(ParamStr( )) PChar(ParamStr( )) mb_IconHand)Haltend
INPUTBOX DPR通过 WINDOWS 对话框接收用户输入的一个字符串 并把用户输入作为调用一个批处理程序或其他程序的第 个参数 program INPUTBOXuses Dialogs Windows{$R * RES} var NewString: stringClickedOK: Booleanbegin if ParamCount <then begin MessageBox( 将用户输入作为 BAT或其他程序的参数调用 # # + 用法: InputBox BAT或其他程序文件名 缺省输入 对话框标题 提示信息 InputBox用法说明 MB_ICONINFORMATION)HaltendNewString := ParamStr( )//default string ClickedOK := InputQuery(ParamStr( ) ParamStr( ) NewString)if ClickedOK then WinExec(PChar(ParamStr( ) + + NewString) SW_SHOWNORMAL)Haltend
用法举例 PRT BAT文件内容: @ECHO OFF D:\POS\INPUTBOX EXE PR BAT 解压POS报表文件并用写字板打开入帐汇总表 请输入日期:
PR BAT文件内容: @ECHO OFF IF % == GOTO END D: CD \POS\INBOX IF NOT EXIST POS% ARJ GOTO NOT_FOUND D:\POS\ARJ X y POS% ARJ CD D:\POS\INBOX\pos_report IF NOT EXIST Pr B% txt GOTO PR _NOT_FOUND C:\WINDOWS\WRITE Pr B% txt D:\POS\ShowMsg 成功! OK!!! GOTO END
:NOT_FOUND D:\POS\EmsgDlg 文件D:\POS\INBOX\POS% ARJ找不到! 出错! CD D:\ GOTO END
:PR _NOT_FOUND D:\POS\EmsgDlg 文件D:\POS\INBOX\pos_report\Pr B% txt找不到! 出错! CD D:\ GOTO END
:END
lishixinzhi/Article/program/Delphi/201311/25043::这都是别人的作品,给你展示一下
==================================
::中文显示ping结果.bat
@echo off
color f2
echo.
set for=于
set of=的
set with=用
set in=(以
set data:=数据
set milli-seconds:=毫秒为单位)
set Approximate=大约
set times=时间:
set round=来回
set trip=行程
set Reply=应答
set from=来自
set bytes=字节
set time=时间:
set timed=时间
set out=超过
set statistics=统计
set Packets:=包:
set Sent=已发送=
set Received=已收到=
set Lost=已丢失=
set loss)=丢失)
set Minimum=最小值=
set Maximum=最大值=
set Average=平均值=
set TTL=TTL=
setlocal enabledelayedexpansion
set a=
set/p a=请输入要ping的网址或IP
for /f "delims=" %%i in ('ping %a%') do (
set ret=
for %%a in (%%i) do if defined %%a (set ret=!ret!!%%a!) else set ret=!ret! %%a
if not "!ret!"=="" (set ret=!ret:time=时间! &&echo !ret!) else echo.
)
pause>nul
================================
::查看网关的MAC地址.bat
@echo off
set /p getway="请输入网关IP地址:"%getway%
arp -a|find "%getway% "
==================================
::Autorun 病毒清除工具.CMD
@Echo Off
color 2f
title Autorun 病毒清除工具-By Phexon
Rem 杀进程
taskkill /F /IM SocksA.exe /IM SVOHOST.exe /IM AdobeR.exe /IM ravmone.exe /IM wincfgs.exe /IM doc.exe /IM rose.exe /IM sxs.exe /IM autorun.exe /IM KB20060111.exe /IM tel.xls.exe>nul 2>nul
:clearauto
cls
Echo.
EchoAutorun 病毒清除工具
Echo.
Echo.
Echo.
Echo 制作:Phexon
Echo.
Echo 本程序运行后自动清除每个盘符下面的Autorun病毒
Echo 本程序原理是基灶陆于读取每个盘符下的Autorun.inf相关字段
Echo.
Echo [1] 仅仅删除所有盘符下的 Autorun 病毒
Echo [2] 删除所有盘符下的 Autorun 病毒并且建立同名免疫目录(推荐!)
Echo [3] 禁用系统的 Autorun 机制以避免 Autorun 病毒的再次感染
Echo [4] 取消所有盘符的 Autorun 病毒免疫
Echo [5] 删除并免疫指定盘符的 Autorun 病毒
Echo [6] 取消免疫指定盘符
Echo [7] 恢复相关注册表项默认值
Echo [0] 退出
Echo.
Set /p clearslt= 请输入您的选择(1/2/3/4/5/6/7/0):
If "裤肆%clearslt%"=="" Goto clearauto
If "%clearslt%"=="1" Goto clearauto1
If "%clearslt%"=="2" Goto clearauto2
If "%clearslt%"=="3" Goto clearauto3
If "隐纯顷%clearslt%"=="4" Goto clearauto4
If "%clearslt%"=="5" Goto clearauto5
If "%clearslt%"=="6" Goto clearauto6
If "%clearslt%"=="7" Goto clearauto7
If "%clearslt%"=="0" Exit
:clearauto1
taskkill /F /IM SocksA.exe /IM SVOHOST.exe /IM AdobeR.exe /IM ravmone.exe /IM wincfgs.exe /IM doc.exe /IM rose.exe /IM sxs.exe /IM autorun.exe /IM KB20060111.exe /IM tel.xls.exe>nul 2>nul
For %%a In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do (
fsutil fsinfo drivetype %%a: |find /i "固定驱动器" &&(
For /f "tokens=2 delims==" %%b In (%%a:\autorun.inf) Do Del /a /f /q "%%a:\%%b" >nul 2>nul
Del /a /f /q %%a:\autorun.inf >nul 2>nul
) >nul 2>nul
fsutil fsinfo drivetype %%a: |find /i "可移动驱动器" &&(
For /f "tokens=2 delims==" %%b In (%%a:\autorun.inf) Do Del /a /f /q "%%a:\%%b" >nul 2>nul
Del /a /f /q %%a:\autorun.inf >nul 2>nul
) >nul 2>nul
)
cls
Echo Autorun 病毒清除完毕,任意键返回……
pause>nul
Goto clearauto
:clearauto2
taskkill /F /IM SocksA.exe /IM SVOHOST.exe /IM AdobeR.exe /IM ravmone.exe /IM wincfgs.exe /IM doc.exe /IM rose.exe /IM sxs.exe /IM autorun.exe /IM KB20060111.exe /IM tel.xls.exe>nul 2>nul
For %%a In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do (
fsutil fsinfo drivetype %%a: |find /i "固定驱动器" &&(
For /f "tokens=2 delims==" %%b In (%%a:\autorun.inf) Do Del /a /f /q "%%a:\%%b" &md "%%a:\%%b\免疫目录不要删除!...\" &attrib +s +h +r "%%a:\%%b" &Echo Y|cacls "%%a:\%%b" /T /C /P everyone:N >nul 2>nul
Del /a /f /q %%a:\autorun.inf &md "%%a:\autorun.inf\免疫目录不要删除!...\" &attrib +s +h +r %%a:\autorun.inf &Echo Y|cacls "%%a:\autorun.inf" /T /C /P everyone:N >nul 2>nul
) >nul 2>nul
fsutil fsinfo drivetype %%a: |find /i "可移动驱动器" &&(
For /f "tokens=2 delims==" %%b In (%%a:\autorun.inf) Do Del /a /f /q "%%a:\%%b" &md "%%a:\%%b\免疫目录不要删除!...\" &attrib +s +h +r "%%a:\%%b" &Echo Y|cacls "%%a:\%%b" /T /C /P everyone:N >nul 2>nul
Del /a /f /q %%a:\autorun.inf &md "%%a:\autorun.inf\免疫目录不要删除!...\" &attrib +s +h +r %%a:\autorun.inf &Echo Y|cacls "%%a:\autorun.inf" /T /C /P everyone:N >nul 2>nul
) >nul 2>nul
)
cls
Echo Autorun 病毒清除并免疫完毕,任意键返回……
pause>nul
Goto clearauto
:clearauto3
cls
Echo.
Echo 正在停止相关服务……
Echo.
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer" /v NoDriveTypeAutoRun /t REG_DWORD /d 0x000000ff /f >nul 2>nul
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer" /v NoDriveTypeAutoRun /t REG_DWORD /d 0x000000ff /f >nul 2>nul
net stop ShellHWDetection >nul 2>nul
sc config ShellHWDetection start= disabled >nul 2>nul
Rem 添加防止从回收站或仿回收站的目录中直接运行可执行文件的策略
Set REGPATH=HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths
Set SFLAG=/v SaferFlags /t REG_DWORD /d 0x00000000 /f
Set IDATA=/f /v ItemData /d "?:\Recyc?
reg add %REGPATH%\{00ffa5bf-abe7-4901-aacf-4f58aa31217a} %SFLAG%>nul
reg add %REGPATH%\{00ffa5bf-abe7-4901-aacf-4f58aa31217a} %IDATA%\*\*\*\*.*">nul
reg add %REGPATH%\{41fe7eed-c47a-46f6-840a-240796fd03cf} %SFLAG%>nul
reg add %REGPATH%\{41fe7eed-c47a-46f6-840a-240796fd03cf} %IDATA%\*\*\*.*">nul
reg add %REGPATH%\{4e93c91c-a40e-462e-9b89-3b0832d222d9} %SFLAG%>nul
reg add %REGPATH%\{4e93c91c-a40e-462e-9b89-3b0832d222d9} %IDATA%\*.*">nul
reg add %REGPATH%\{5bfc100b-d3fb-450e-88ec-6819ab56a9ff} %SFLAG%>nul
reg add %REGPATH%\{5bfc100b-d3fb-450e-88ec-6819ab56a9ff} %IDATA%\*\*\*\*.*">nul
reg add %REGPATH%\{5c5e2bcd-7057-43f4-830c-e4361d2afadd} %SFLAG%>nul
reg add %REGPATH%\{5c5e2bcd-7057-43f4-830c-e4361d2afadd} %IDATA%\*.*">nul
reg add %REGPATH%\{5f8ff865-0638-4c6e-98de-923e7bc6b330} %SFLAG%>nul
reg add %REGPATH%\{5f8ff865-0638-4c6e-98de-923e7bc6b330} %IDATA%\*\*\*.*">nul
reg add %REGPATH%\{649c1429-0e79-453c-abe9-b5682e035ae7} %SFLAG%>nul
reg add %REGPATH%\{649c1429-0e79-453c-abe9-b5682e035ae7} %IDATA%\*\*.*">nul
reg add %REGPATH%\{718f54b2-c669-4d7b-aeff-18d69f100034} %SFLAG%>nul
reg add %REGPATH%\{718f54b2-c669-4d7b-aeff-18d69f100034} %IDATA%\*\*.*">nul
reg add %REGPATH%\{8385d9d2-80c9-4ac1-a100-ed3e62863d97} %SFLAG%>nul
reg add %REGPATH%\{8385d9d2-80c9-4ac1-a100-ed3e62863d97} %IDATA%\*.*">nul
reg add %REGPATH%\{af2a4fcf-441c-421e-9663-52cd3502cfd7} %SFLAG%>nul
reg add %REGPATH%\{af2a4fcf-441c-421e-9663-52cd3502cfd7} %IDATA%\*\*\*.*">nul
reg add %REGPATH%\{b997f4b2-c037-4e97-b051-31f5d86df802} %SFLAG%>nul
reg add %REGPATH%\{b997f4b2-c037-4e97-b051-31f5d86df802} %IDATA%\*\*.*">nul
reg add %REGPATH%\{d4e7b6ff-d76f-407f-b8bb-ea0835f5babc} %SFLAG%>nul
reg add %REGPATH%\{d4e7b6ff-d76f-407f-b8bb-ea0835f5babc} /f /v ItemData /d "RECYC*.*">nul
Rem 清除喜欢利用回收站的移动磁盘自动运行病毒
For %%a In (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) Do (
For %%b In (exe pif com) Do (
Echo Y|cacls "%%a:\Recycler\*.%%b" /C /T /P everyone:F>nul 2>nul&Echo Y|cacls "%%a:\Recycled\*.%%b" /C /T /P everyone:F>nul 2>nul&Echo Y|cacls "%%a:\Recycled\Recycled\*.%%b" /C /T /P everyone:F>nul 2>nul
Del /A /F /S /Q "%%a:\Recycler\*.%%b">nul 2>nul&Del /A /F /S /Q "%%a:\Recycled\*.%%b">nul 2>nul&Del /A /F /S /Q "%%a:\Recycled\Recycled\*.%%b">nul 2>nul
)
)>nul 2>nul
Echo.
Echo 相关服务已停止并禁用,任意键返回……
pause >nul
Goto clearauto
:clearauto4
For %%a In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do (
fsutil fsinfo drivetype %%a: |find /i "固定驱动器" &&(
cacls "%%a:\autorun.inf" /T /C /P everyone:F&Del /a /f /q "%%a:\autorun.inf" &rd /s /q "%%a:\autorun.inf">nul 2>nul
)>nul 2>nul
fsutil fsinfo drivetype %%a: |find /i "可移动驱动器" &&(
cacls "%%a:\autorun.inf" /T /C /P everyone:F&Del /a /f /q "%%a:\autorun.inf" &rd /s /q "%%a:\autorun.inf">nul 2>nul
)>nul 2>nul
)
cls
Echo.
Echo 已经解除全部盘符的免疫,任意键返回……
pause>nul
Goto clearauto
:clearauto5
cls
Echo.
Set /p pf= 请输入盘符,如"F:"(不包括引号)
Echo 即将免疫%pf%盘……|find /i ":"||Set pf=%pf%:&&Echo 即将免疫%pf%盘……
taskkill /F /IM SocksA.exe /IM SVOHOST.exe /IM AdobeR.exe /IM ravmone.exe /IM wincfgs.exe /IM doc.exe /IM rose.exe /IM sxs.exe /IM autorun.exe /IM KB20060111.exe /IM tel.xls.exe>nul 2>nul
fsutil fsinfo drivetype %pf% |find /i "固定驱动器" &&(
For /f "tokens=2 delims==" %%a In (%pf%\autorun.inf) Do Del /a /f /q "%pf%\%%a" &md "%pf%\%%a\免疫目录不要删除!...\" &attrib +s +h +r "%pf%\%%a" &Echo Y|cacls "%pf%\%%a" /T /C /P everyone:N >nul 2>nul
Del /a /f /q %pf%\autorun.inf &md "%pf%\autorun.inf\免疫目录不要删除!...\" &attrib +s +h +r %pf%\autorun.inf &Echo Y|cacls "%pf%\autorun.inf" /T /C /P everyone:N >nul 2>nul
Goto DoneclearAuto
) >nul 2>nul
fsutil fsinfo drivetype %pf% |find /i "可移动驱动器" &&(
For /f "tokens=2 delims==" %%a In (%pf%\autorun.inf) Do Del /a /f /q "%pf%\%%a" &md "%pf%\%%a\免疫目录不要删除!...\" &attrib +s +h +r "%pf%\%%a" &Echo Y|cacls "%pf%\%%a" /T /C /P everyone:N >nul 2>nul
Del /a /f /q %pf%\autorun.inf &md "%pf%\autorun.inf\免疫目录不要删除!...\" &attrib +s +h +r %pf%\autorun.inf &Echo Y|cacls "%pf%\autorun.inf" /T /C /P everyone:N >nul 2>nul
Goto DoneclearAuto
) >nul 2>nul
Echo.
Echo 您所输入的盘符不存在或者是只读设备,
Echo 请重新输入
Goto clearauto5
:DoneclearAuto
cls
Echo.
Echo 指定的磁盘 %pf% 已经成功进行了 Autorun 病毒的清除及免疫
Echo.
Echo [1] 继续免疫其他磁盘
Echo [0] 返回主菜单
Set /p choice= 请输入您的选择(1/0):
If %choice%="" Goto DoneclearAuto
If %choice%="1" Goto clearauto5
If %choice%="0" Goto clearauto
:clearauto6
cls
Echo.
Set /p pf= 请输入盘符,如"F:"(不包括引号)
Echo 即将取消免疫%pf%盘……|find /i ":"||Set pf=%pf%:&&Echo 即将取消免疫%pf%盘……
fsutil fsinfo drivetype %pf% |find /i "固定驱动器" &&(
cacls "%pf%\autorun.inf" /T /C /P everyone:F&Del /a /f /q "%pf%\autorun.inf" &rd /s /q "%pf%\autorun.inf">nul 2>nul
Goto DoneUnauto
)>nul 2>nul
fsutil fsinfo drivetype %pf% |find /i "可移动驱动器" &&(
cacls "%pf%\autorun.inf" /T /C /P everyone:F&Del /a /f /q "%pf%\autorun.inf" &rd /s /q "%pf%\autorun.inf">nul 2>nul
Goto DoneUnauto
)>nul 2>nul
Echo.
Echo 您所输入的盘符不存在或者是只读设备,
Echo 请重新输入
Goto clearauto6
:DoneUnauto
cls
Echo.
Echo 指定的磁盘 %pf% 已经成功解除了 Autorun 病毒免疫
Echo.
Echo [1] 继续解除免疫其他磁盘
Echo [0] 返回主菜单
Set choice=
Set /p choice= 请输入您的选择(1/0):
If %choice%="" Goto DoneUnauto
If %choice%="1" Goto clearauto6
If %choice%="0" Goto clearauto
:clearauto7
cls
Rem 防止在资源管理器中彻底隐藏文件、禁止文件等
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" /v CheckedValue /t REG_DWORD /d 0x00000001 /f>nul 2>nul
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2" /f>nul 2>nul
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun" /f>nul 2>nul
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v DisallowRun /f>nul 2>nul
Rem 防止转移启动组位置
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Startup /d "%USERPROFILE%\「开始」菜单\程序\启动" /f>nul 2>nul
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Startup" /d "%ALLUSERSPROFILE%\「开始」菜单\程序\启动" /f>nul 2>nul
Echo.
Echo 相关注册表恢复完毕,任意键返回……
pause>nul
Goto clearauto
pause
======================================
慢慢学习吧!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)