批处理几个例子
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