通过DELPHI小程序在WINDOWS下更好地使用DOS批处理

通过DELPHI小程序在WINDOWS下更好地使用DOS批处理,第1张

我们知道 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

======================================

慢慢学习吧!!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8223066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存