几个批处理例子

1,注册表扫描

@echo off
title 注册表扫描中…
mode con cols=50 lines=10
setlocal enabledelayedexpansion
>%temp%\reglist.txt echo          %DATE%%time% 注册表扫描报告
for /f “tokens=3 delims=\” %%i in (‘reg query HKLM\SOFTWARE’) do (
echo 当前扫描信息: HKLM\SOFTWARE\%%i
>>%temp%\reglist.txt                 echo
>>%temp%\reglist.txt                 echo                                     软件名称:%%i
>>%temp%\reglist.txt                 echo
if not “%%i”==”Classes” if not “%%i”==”Microsoft” for /f “tokens=4 delims=\” %%j in (‘reg query HKLM\SOFTWARE\%%i 2^>nul’) do (
echo             软件信息: %%j>>%temp%\reglist.txt

for /f “tokens=* delims=” %%k in (‘reg query “hklm\software\%%i\%%j” /S^|findstr /c:”REG_SZ” ‘) do (
set /a n+=1
cls
echo 已扫扫描项值: !n!     当前信息: %%j
echo                   关联文件信息:%%k>>%temp%\reglist.txt )

)
)
)
>>%temp%\reglist.txt echo 如需保存结果请选择文件另存为                 BY PPdos
title FINISHED&echo                              扫描完毕!
ping 127.0>nul
start %temp%\reglist.txt

2,计算器

@echo off
title DOS计算器—by blackboy
mode con: cols=45 lines=20
setlocal enabledelayedexpansion

REM 开始界面
:begin
cls
color 0a
echo.
echo ╭——————╮
echo ╭———┤ DOS 计算器 ├———╮
echo │ ╰——————╯ │
echo │ =by blackboy= │
echo │ │
echo │ 请选择: │
echo │ │
echo │ 1 – 普通+-×÷ │
echo │ 2 – 求N次方 │
echo │ 3 – 求阶乘 │
echo │ h – 帮助 │
echo │ q – 退出 │
echo │ │
echo ╰——————————————╯
REM 取得用户输入
echo.
set UserChoice=””
set /p UserChoice=请选择:
if /I %UserChoice%==q goto end
if /I %UserChoice%==h goto help
if %UserChoice%==1 goto normal
if %UserChoice%==2 goto fang
if %UserChoice%==3 goto jiecheng
goto error

REM 普通运算
:normal
cls
echo.
echo.
echo.
echo ╭—————————╮
echo │ 普通+-×÷运算 │
echo ╰—————————╯
echo.
set /p UserInput=请输入表达式:
REM 检测表达式
echo %UserInput% | findstr “[0-9]”>nul || goto error
echo %UserInput% | findstr /I “[a-z]”>nul && goto error
echo %UserInput% | find “.”>nul && goto error
echo %UserInput% | findstr “+ – * /”>nul || goto error
echo %UserInput% | find “+”>nul && goto add
echo %UserInput% | find “-“>nul && goto minus
echo %UserInput% | find “*”>nul && goto multiply
echo %UserInput% | find “/”>nul && goto divide
REM 实际运算
:add
for /f “tokens=1,2 delims=+” %%a in (“%UserInput%”) do set /a result=%%a+%%b
echo 计算结果=%result%
goto refresh
:minus
for /f “tokens=1,2 delims=-” %%a in (“%UserInput%”) do set /a result=%%a-%%b
echo 计算结果=%result%
goto refresh
:multiply
for /f “tokens=1,2 delims=*” %%a in (“%UserInput%”) do set /a result=%%a*%%b
echo 计算结果=%result%
goto refresh
:devide
for /f “tokens=1,2 delims=/” %%a in (“%UserInput%”) do set /a result=%%a/%%b
echo 计算结果=%result%
goto refresh

REM 计算N次方
:fang
cls
echo.
echo.
echo.
echo ╭—————————╮
echo │ 求 N 次 方 │
echo ╰—————————╯
echo.
set /p UserInput=请输入表达式:
REM 检测表达式
echo %UserInput% | findstr “[0-9]”>nul || goto error
echo %UserInput% | findstr /I “[a-z]”>nul && goto error
echo %UserInput% | find “.”>nul && goto error
echo %UserInput% | find “_”>nul || goto error
set num=
set n=
set /a result=1
for /f “tokens=1,2 delims=_” %%a in (“%UserInput%”) do set /a num=%%a & set /a n=%%b
if %n%==0 goto showfang
for /L %%i in (1,1,%n%) do set /a result*=%num%
:showfang
echo 计算结果=%result%
goto refresh

REM 计算阶乘
:jiecheng
cls
echo.
echo.
echo.
echo ╭—————————╮
echo │ 求 阶 乘 │
echo ╰—————————╯
echo.
set /p UserInput=请输入要求阶乘的整数:
REM 检测表达式
echo %UserInput% | findstr “[0-9]”>nul || goto error
echo %UserInput% | findstr /I “[a-z]”>nul && goto error
echo %UserInput% | find “.”>nul && goto error
set /a result=1
REM 不可以直接判断UserInput是否为0
set num=%UserInput%
if %num%==0 goto showjiecheng
for /L %%i in (%num%,-1,1) do set /a result*=%%i
:showjiecheng
echo 计算结果=%result%
goto refresh

REM 错误
:error
cls
color 0c
echo.
echo.
echo.
echo ╭————————————╮
echo │ 输入错误,请参考帮助! │
echo ╰————————————╯
echo.

REM 刷新
:refresh
echo.
set UserChoice=””
set /p UserChoice=请按任意键继续,退出请按q,帮助请按h:
if /I %UserChoice%==q goto end
if /I %UserChoice%==h goto help
goto begin

REM 帮助
:help
cls
color 0a
echo.
echo ╭——————╮
echo ╭————┤ 帮 助 ├————╮
echo │ ╰——————╯ │
echo │ │
echo │ 1.普通运算请使用以下形式: │
echo │ 4+1 5-2 2*3 6/2 │
echo │ │
echo │ 2.计算N次方请使用以下形式: │
echo │ 2_5 (求2的5次方) │
echo │ │
echo │ 3.只支持整数运算 │
echo │ │
echo │ 4.输入部分特殊符号可能会 │
echo │ 导致意外退出 │
echo │ │
echo ╰————————————————╯
goto refresh

REM 退出
:end
cls
color 0a
echo.
echo.
echo.
echo ╭————————————————╮
echo │ │
echo │ 非常感谢您的使用,再见! │
echo │ │
echo ╰————————————————╯
ping -n 2 127.1>nul
exit

3,生成dos帮助文档

@echo off
title Dos帮助文档 装载中…
mode con cols=50 lines=5
setlocal enabledelayedexpansion
>Dos帮助文档.txt echo                                 Dos帮助文档
>>Dos帮助文档.txt echo.
>>Dos帮助文档.txt echo                                %DATE%%time%
>>Dos帮助文档.txt echo.
>>Dos帮助文档.txt echo                                作者: LGC
>>Dos帮助文档.txt echo.
for /f “skip=1 ” %%i in (‘help’) do (
>>Dos帮助文档.txt echo            ================================================================
>>Dos帮助文档.txt echo.                                     命令名称:%%i
>>Dos帮助文档.txt echo            ================================================================
>>Dos帮助文档.txt echo.
echo.
help %%i >>Dos帮助文档.txt
set /a n+=1
cls
echo 已完成命令数: !n!     当前命令:%%i
>>Dos帮助文档.txt echo.
)

title FINISHED&echo               扫描完毕!
ping 127.0>nul
Dos帮助文档.txt

4,他妈的给我开机

@echo off
setlocal EnableDelayedExpansion

set _tmp_F_S=C:\_delay.vbs
set _tmp_F_F=C:\_tmp.tmp
set delay=50
set s1=开机
set s2=快开机
set s3=他妈的开机
set s4=你他妈到底开不开机
set s5=操!!再不开机老子砸了你!!
echo if WScript.Arguments.count = 1 then WScript.Sleep CInt(WScript.Arguments(0)) end if>%_tmp_F_S%
if exist %_tmp_F_F% del %_tmp_F_F%
for /L %%i in (1,1,4) do (call :show %%s%%i%% && call :fail %%s%%i%%)
call :show %s5%
call :suc
if exist %_tmp_F_S% del %_tmp_F_S%
if exist %_tmp_F_F% del %_tmp_F_F%
ping -n 1 127.1>nul
goto :EOF

:show
if “%~1″==”” goto :EOF
set s=%1
set /p ans=%cd%^><nul
set /A len=0
:comp_len
echo %%s:~%len%,1%% | find “ECHO”>nul && goto end_comp
set /A “len+=1”
goto comp_len
:end_comp
set /A “len-=1”
for /L %%i in (0,1,%len%) do (cscript //nologo %_tmp_F_S% %delay% && set /p ans=!s:~%%i,1!<nul)
cscript //nologo %_tmp_F_S% 500
echo.
echo %cd%^>%1>>%_tmp_F_F%
echo.>>%_tmp_F_F%
goto :EOF

:fail
echo ‘%1’ 不是内部或外部命令,也不是可运行的程序
echo 或批处理文件。
echo.
echo ‘%1’ 不是内部或外部命令,也不是可运行的程序>>%_tmp_F_F%
echo 或批处理文件。>>%_tmp_F_F%
echo.>>%_tmp_F_F%
goto :EOF

:suc
ping -n 1 127.1>nul
set eqq================================================================================
set gtr=^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>^>
echo                             Loading Windows 2000 …>>%_tmp_F_F%
echo.>>%_tmp_F_F%
for /L %%i in (0,1,79) do (set /A new=2*%%i && type %_tmp_F_F% && echo !gtr:~0,%%i!!eqq:~%%i,80! && ping -n 1 127.1>nul && cls)
goto :EOF

5,系统设置自动登录

@echo off
:: 用于不用每次登录都要手动填写登录名和密码
title 快速登录Windows系统
color 1e
echo.
echo 作者:LGC
echo.
echo QQ:28493389
echo.
echo     软件描述:现在的黑客如此泛滥,谁也不能保证自己的计算机系统绝对安全,各种各样的入侵技术应用的是相当广泛,而对于我们这些水平一般的用户来说,自己能做只能是把自己的系统登录密码设的复杂一点,这样即使黑客能入侵你,也要很费劲的,对于那些没有耐性的黑客,可能就此退缩哦,嘻嘻而如果把用户密码设的很复杂了,在我们正常登录的时候就会很浪费时间,呵呵,对于我们这类懒人来说,是无法容忍的,所以就做了这个东西,不用登录就客进入系统,嘻嘻。。(并不是真的不登录的,而是Windows自己启动时登录的,嘻嘻。。)
echo.
echo.
echo 1,开启自动登录   2,关闭自动登录   3,自动登录设置 4, 退出
echo.
:STAR
@set /p XZ=请选择操作类型:
if %XZ%== 1 GOTO OPENAUTO
if %XZ%== 2 GOTO CLOSEAUTO
if %XZ%== 3 GOTO EDITAUTO
if %XZ%== 4 GOTO CLOSESYS
if %XZ% GTR 4 GOTO STAR

:OPENAUTO
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” /V AutoAdminLogon /T REG_SZ /D 1 /F
goto CLOSESYS
:CLOSEAUTO
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” /V AutoAdminLogon /T REG_SZ /D 0 /F
goto CLOSESYS
:EDITAUTO
cls
set /p username=请输入用户名:
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” /V DefaultUserName /T REG_SZ /D %username% /F
set /p userpass=请输入用户密码:

echo %userpass%>1
(find /i “echo” 1)>nul && REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” /V DefaultPassword /T REG_SZ /F || REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” /V DefaultPassword /T REG_SZ /D %userpass% /F
echo pause>nul
del 1
goto CLOSESYS

:CLOSESYS

pause

6,关机

@echo off
title 系统关机
:loop
cls
color bc
echo.
echo.
echo *** WINDOWSXP 快速关机系统 ***
echo.
echo 快速关机……………………请直接回车
echo 开始倒计时关机……………请输入1+回车
echo 设定时间点关机……………请输入2+回车
echo 显示计时关机………………请输入3+回车
echo 设定每天关机………………请输入4+回车
echo 取消系统关机………………请输入空格+回车
echo 退出…………………………请输入Q+回车
echo.
echo.
set a=
set /p a= 【 请输入 】:
if “%a%”==”1” goto aaa
if “%a%”==”2” goto bbb
if “%a%”==” ” goto ccc
if “%a%”==”” goto ddd
if “%a%”==”3” goto eee
if “%a%”==”4” goto fff
if “%a%”==”q” exit
goto loop
:ddd
@echo off
color e5
cls
echo.
echo.
echo 〖系统即将关机并结束进程〗
pause
echo.
::ntsd -c q -pn %run%
taskkill /f /t /im pfw.exe /f /t /im internat.exe /f /t /im explorer.exe
shutdown -s -f -t 0 -c “取消请运行shutdown -a”
exit
:aaa
@echo off
color f4
echo.
echo.
echo.
echo 现在将设置系统自动关机,请在此输入倒计时秒数后回车,系统将在设定时间自动关闭
set mytime=
set /p mytimes= 【 倒计时关机请输入 小时数】:
set /a mytimes=%mytimes%*3600
set /p mytimef= 【 倒计时关机请输入 分钟数】:
set /a mytimef=%mytimef%*60
set /p mytimem= 【 倒计时关机请输入 秒 数】:
set /a mytime=%mytimes%+%mytimef%+%mytimem%
shutdown -s -t %mytime% -c “取消请运行shutdown -a”
cls
echo.
echo 〖系统将在%mytime%秒后关机〗
echo.
pause
goto loop
:bbb
@echo off
color f9
echo.
echo.
echo.
echo 现在将设置系统自关机,请在此输入关机时间(如12:00)回车,系统将定时自动关闭
set mytimes=
set mytimef=
set /p mytimes= 【 定时关机请输入 时】:
set /p mytimef= 【 定时关机请输入 分】:
at %mytimes%:%mytimef% shutdown -s -t 0
::这表示在mytime分执行shutdown -s -t 0操作.如果当前时间大于任务执行时间,则默认为明日执行,0为倒计时时间.
echo.
echo 〖现在将显示所有计划〗
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
at
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
pause
::显示计划并暂停
goto loop
:ccc
@echo off
color f2
echo.
echo.
echo.
echo 〖现在将设置取消系统自动关机〗
echo.
pause
shutdown -a
echo.
echo.
echo 〖现在将显示所有计划,在回车后取消计划且无须确认〗
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
at
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
pause
at /del /yes
::取消所有计划并无须确认
cls
echo.
echo 〖系统已经取消自动关机〗
echo 〖系统已经取消所有计划任务〗
echo.
pause
goto loop
:eee
@echo off
color f4
echo.
echo.
echo.
echo 现在将设置系统自动关机,请在此输入倒计时秒数后回车,系统将在设定时间自动关闭
set mytime=
::此行是为了清mytime变量值,以免在不注意的情况下存在变量值,此为一种好的习惯.
set mytimes=0
::赋值为0是为了使%mytimes%不致于无意义,下同.
set mytimef=0
set mytimem=0
set /p mytimes= 【 倒计时关机请输入 小时数】:
set /a mytimes=%mytimes%*3600
set /p mytimef= 【 倒计时关机请输入 分钟数】:
set /a mytimef=%mytimef%*60
set /p mytimem= 【 倒计时关机请输入 秒 数】:
color a3
mode con cols=30 lines=4
set /a mytime=%mytimes%+%mytimef%+%mytimem%
SET wait=ping -n 2 127.0.0.1 ^>^nul
for /l %%n in (%mytime%,-1,0) do (
rem cls
echo *******************
echo 〖%%n秒后自动关机〗
echo *******************
%wait%
cls
)
shutdown -s -t 0
goto loop
:fff
@echo off
color f9
echo.
echo.
echo.
echo 现在将设置系统每天运行自关机
echo.
set myopengs=
set /p myopengs= 【重复设定请输入单空格+回车,单次及最后一次设定请回车】
echo.
echo 请在此输入关机时间(如12:00)后回车,系统将定时关闭
echo.
set mytimes=
set mytimef=
set /p mytimes= 【 定时关机请输入 时】:
set /p mytimef= 【 定时关机请输入 分】:
at %mytimes%:%mytimef% /EVEry:M,T,W,Th,F,S,Su shutdown -s -f
echo.
echo 〖现在将显示所有计划〗
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
at
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
pause
::显示计划并暂停
if “%myopengs%”==” ” goto :fff
goto loop