1一、交互界面设计
没啥说的,看看高手设计的菜单界面吧:@echo off
2cls
3title 终极多功能修复
4:menu
5cls
6color 0A
7echo.
8echo ==============================
9echo 请选择要进行的操作,然后按回车
10echo ==============================
11echo.
12echo 1.网络修复及上网相关设置,修复IE,自定义屏蔽网站13echo.
14echo 2.病毒专杀工具,端口关闭工具,关闭自动播放
15echo.
16echo 3.清除所有多余的自启动项目,修复系统错误
17echo.
18echo 4.清理系统垃圾,提高启动速度
19echo.
20echo Q.退出
21echo.
22echo.
23:cho
24set choice=
25set /p choice= 请选择:
26IF NOT "%choice%"=="" SET choice=%choice:~0,1%
27if /i "%choice%"=="1" goto ip
28if /i "%choice%"=="2" goto setsave
29if /i "%choice%"=="3" goto kaiji
30if /i "%choice%"=="4" goto clean
31if /i "%choice%"=="Q" goto endd
32echo 选择无效,请重新输入
33echo.
34goto cho
复制代码
只要学完本教程前面的章节,上面的程序应该能看懂了。
二、if…else…条件语句
前面已经谈到,DOS条件语句主要有以下形式
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
增强用法:IF [/I] string1 compare-op string2 command
增强用法中加上/I就不区分大小写了!
增强用法中还有一些用来判断数字的符号:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
上面的command命令都可以用小括号来使用多条命令的组合,包括else子句,组合命令中可以嵌套使用条件或循环命令。
例如:
IF EXIST filename (
del filename
) ELSE (
echo filename missing
)
也可写成:
if exist filename (del filename) else (echo filename missing)
但这种写法不适合命令太多或嵌套命令的使用。
三、循环语句
1、指定次数循环
FOR /L %variable IN (start,step,end) DO command [command-parameters]
组合命令:
FOR /L %variable IN (start,step,end) DO (
Command1
Command2
……
)
2、对某集合执行循环语句。
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 对每个文件执行的命令,可用小括号使用多条命令组合。
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以[drive:]path 为根的目录树,指向每个目录中的
FOR 语句。如果在/R 后没有指定目录,则使用当前
目录。如果集仅为一个单点(.)字符,则枚举该目录树。
同前面一样,command可以用括号来组合:
FOR /R [[drive:]path] %variable IN (set) DO (
Command1
Command2
……
commandn
)
3、条件循环
上面的循环结构是用for命令来实现的,for命令循环有一个缺点,就是整个循环被当作一条命令语句,涉及到变量延迟的问题。
利用goto语句和条件判断,dos可以实现条件循环,很简单啦,看例子:
例:
35@echo off
36set var=0
37rem ************循环开始了
38:continue
39set /a var+=1
40echo 第%var%次循环
41if %var% lss 100 goto continue
42rem ************循环结束了
43echo 循环执行完毕
44pause
复制代码
例:
45@echo off
46set var=100
47rem ************循环开始了
48:continue
49echo 第%var%次循环
50set /a var-=1
51if %var% gtr 0 goto continue
52rem ************循环结束了
53echo 循环执行完毕
54pause
复制代码
四、子程序
在批处理程序中可以调用外部可运行程序,比如exe程序,也可调用其他批处理程序,这些也可以看作子程序,但是不够方便,如果被调用的程序很多,就显得不够简明了,很繁琐。
在windowsXP中,批处理可以调用本程序中的一个程序段,相当于子程序,这些子程序一般放在主程序后面。
子程序调用格式:
CALL :label arguments
子程序语法:
:label
command1
command2
......
commandn
goto :eof
在子程序段中,参数%0指标签:label
子过程一般放在最后,并且注意在主程序最后要加上exit或跳转语句,避免错误的进入子过
程。
子程序和主程序中的变量都是全局变量,其作用范围都是整个批处理程序。
传至子程序的参数在call语句中指定,在子程序中用%1、%2至%9的形式调用,而子程序返回主程序的数据只需在调用结束后直接引用就可以了,当然也可以指定返回变量,请看下面的例子。
子程序例1:
55@echo off
56call :sub return 你好
57echo 子程序返回值:%return%
58pause
59
60:sub
61set %1=%2
62goto :eof
复制代码
运行结果:你好
子程序例2:设计一个求多个整数相加的子程序
63@echo off
64set sum=0
65call :sub sum 10 20 35
66echo 数据求和结果:%sum%
67pause
68
69:sub
70rem 参数1为返回变量名称
71set /a %1=%1+%2
72shift /2
73if not "%2"=="" goto sub
74goto :eof
复制代码
运行结果:65
在win98系统中,不支持上面这种标号调用,须将子程序单独保存为一个批处理程序,然后调用。
五、用ftp命令实现自动下载
ftp是常用的下载工具,ftp界面中有40多个常用命令,自己学习了,不介绍了。这里介绍如何用dos命令行调用ftp命令,实现ftp自动登录,并上传下载,并自动退出ftp程序。
其实可以将ftp命令组合保存为一个文本文件,然后用以下命令调用即可。
ftp -n -s:[[drive:]path]filename
上面的filename为ftp命令文件,包括登录IP地址,用户名、密码、操作命令等
例:
open 90.52.8.3 #打开ip
user iware #用户为iware
password8848 #密码
bin #二进制传输模式
prompt
cd tmp1 #切换至iware用户下的tmp1目录
pwd
lcd d:\download #本地目录
mget * #下载tmp1目录下的所有文件
bye #退出ftp
六、用7-ZIP实现命令行压缩和解压功能
语法格式:(详细情况见7-zip帮助文件,看得头晕可以跳过,用到再学)
7z
7z.exe的每个命令都有不同的参数
其中,7z是至命令行压缩解压程序7z.exe,
a:Adds files to archive. 添加至压缩包
a命令可用参数:
-i (Include)
-m (Method)
-p (Set Password)
-r (Recurse)
-sfx (create SFX)
-si (use StdIn)
-so (use StdOut)
-ssw (Compress shared files)
-t (Type of archive)
-u (Update)
-v (V olumes)
-w (Working Dir)
-x (Exclude)
b:Benchmark
d:Deletes files from archive. 从压缩包中删除文件
d命令可用参数:
-i (Include)
-m (Method)
-p (Set Password)
-r (Recurse)
-u (Update)
-w (Working Dir)
-x (Exclude)
e:Extract解压文件至当前目录或指定目录
e命令可用参数:
-ai (Include archives)
-an (Disable parsing of archive_name)
-ao (Overwrite mode)
-ax (Exclude archives)
-i (Include)
-o (Set Output Directory)
-p (Set Password)
-r (Recurse)
-so (use StdOut)
-x (Exclude)
-y (Assume Yes on all queries)
l:Lists contents of archive.
t:Test
u:Update
x:eXtract with full paths用文件的完整路径解压至当前目录或指定目录
x命令可用参数:
-ai (Include archives)
-an (Disable parsing of archive_name)
-ao (Overwrite mode)
-ax (Exclude archives)
-i (Include)
-o (Set Output Directory)
-p (Set Password)
-r (Recurse)
-so (use StdOut)
-x (Exclude)
-y (Assume Yes on all queries)
七、调用VBScript程序
使用Windows 脚本宿主,可以在命令提示符下运行脚本。CScript.exe 提供了用于设置脚本属性的命令行开关。
用法:CScript 脚本名称[脚本选项...] [脚本参数...]
选项:
//B 批模式:不显示脚本错误及提示信息
//D 启用Active Debugging
//E:engine 使用执行脚本的引擎
//H:CScript 将默认的脚本宿主改为CScript.exe
//H:WScript 将默认的脚本宿主改为WScript.exe (默认)
//I 交互模式(默认,与//B 相对)
//Job:xxxx 执行一个WSF 工作
//Logo 显示徽标(默认)
//Nologo 不显示徽标:执行时不显示标志
//S 为该用户保存当前命令行选项
//T:nn 超时设定秒:允许脚本运行的最长时间
//X 在调试器中执行脚本
//U 用Unicode 表示来自控制台的重定向I/O
“脚本名称”是带有扩展名和必需的路径信息的脚本文件名称,如d:\admin\vbscripts\chart.vbs。“脚本选项和参数”将传递给脚本。脚本参数前面有一个斜杠(/)。每个参数都是可选的;但不能在未指定脚本名称的情况下指定脚本选项。如果未指定参数,则CScript 将显示CScript 语法和有效的宿主参数。
八、将批处理转化为可执行文件:
由于批处理文件是一种文本文件,任何人都可以对其进行随便编辑,不小心就会把里面的命令破坏掉,所以如果将其转换成.com格式的可执行文件,不仅执行效率会大大提高,而且不会破坏原来的功能,更能将优先级提到最高。Bat2Com就可以完成这个转换工作。
小知识:在DOS环境下,可执行文件的优先级由高到低依次为.com>.exe>.bat>.cmd,即如果在同一目录下存在文件名相同的这四类文件,当只键入文件名时,DOS执行的是https://www.doczj.com/doc/2e2803130.html,,如果需要执行其他三个文件,则必须指定文件的全名,如name.bat。
这是一个只有5.43K大小的免费绿色工具,可以运行在纯DOS或DOS窗口的命令行中,用法:Bat2Com FileName,这样就会在同一目录下生成一个名为https://www.doczj.com/doc/2e2803130.html,的可执行文件,执行的效果和原来的.bat文件一样。
九、时间延迟
什么是时间延迟?顾名思义,就是执行一条命令后延迟一段时间再进行下一条命令。
延迟的应用见下节:“模拟进度条”。
1、利用ping命令延时
例:
75@echo off
76echo 延时前:%time%
77ping /n 3 127.0.0.1 >nul
78echo 延时后:%time%
79pause
复制代码
解说:用到了ping命令的“/n”参数,表示要发送多少次请求到指定的ip。本例中要发送3次请求到本机的ip(127.0.0.1)。127.0.0.1可简写为127.1。“>nul”就是屏蔽掉ping命令所显示的内容。
2、利用for命令延时
例:
80@echo off
81echo 延时前:%time%
82for /l %%i in (1,1,5000) do echo %%i>nul
83echo 延时后:%time%
84pause
复制代码
解说:原理很简单,就是利用一个计次循环并屏蔽它所显示的内容来达到延时的目的。
3、利用vbs延迟函数,精确度毫秒,误差1000毫秒内
例:
85@echo off
86echo %time%
87call :delay 5000
88echo %time%
89pause
90exit
91
92:delay
93echo WScript.Sleep %1>delay.vbs
94CScript //B delay.vbs
95del delay.vbs
96goto :eof
复制代码
运行显示:
10:44:06.45
10:44:11.95
请按任意键继续. . .
上面的运行结果显示实际延时了5500毫秒,多出来的500毫秒时建立和删除临时文件所耗费的时间。误差在一秒之内。
4、仅用批处理命令实现任意时间延迟,精确度10毫秒,误差50毫秒内
仅用批处理命令就可以实现延迟操作。
例:
97@echo off
98set /p delay=请输入需延迟的毫秒数:
99set TotalTime=0
100set NowTime=%time%
101::读取起始时间,时间格式为:13:01:05.95
102echo 程序开始时间:%NowTime%
103:delay_continue
104set /a minute1=1%NowTime:~3,2%-100
105::读取起始时间的分钟数
106set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000
107::将起始时间的秒数转为毫秒
108set NowTime=%time%
109set /a minute2=1%NowTime:~3,2%-100
110:: 读取现在时间的分钟数
111set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000
112::将现在时间的秒数转为毫秒
113set /a TotalTime+=(%minute2%-%minute1%+60)%%60*60000+%second2%-%second1%
114if %TotalTime% lss %delay% goto delay_continue
115echo 程序结束时间:%time%
116echo 设定延迟时间:%delay%毫秒
117echo 实际延迟时间:%TotalTime%毫秒
118pause
复制代码
运行显示:
请输入需延迟的毫秒数:6000
程序开始时间:15:32:16.37
程序结束时间:15:32:22.37
设定延迟时间:6000毫秒
实际延迟时间:6000毫秒
请按任意键继续. . .
实现原理:首先设定要延迟的毫秒数,然后用循环累加时间,直到累加时间大于等于延迟时间。
误差:windows系统时间只能精确到10毫秒,所以理论上有可能存在10毫秒误差。
经测试,当延迟时间大于500毫秒时,上面的延迟程序一般不存在误差。当延迟时间小于500毫秒时,可能有几十毫秒误差,为什么?因为延迟程序本身也是有运行时间的,同时系统时间只能精确到10毫秒。
为了方便引用,可将上面的例子改为子程序调用形式:
119@echo off
120echo 程序开始时间:%Time%
121call :delay 10
122echo 实际延迟时间:%totaltime%毫秒
123echo 程序结束时间:%time%
124pause
125exit
126
127::-----------以下为延时子程序--------------------
128:delay
129@echo off
130if "%1"=="" goto :eof
131set DelayTime=%1
132set TotalTime=0
133set NowTime=%time%
134::读取起始时间,时间格式为:13:01:05.95
135:delay_continue
136set /a minute1=1%NowTime:~3,2%-100
137set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000
138set NowTime=%time%
139set /a minute2=1%NowTime:~3,2%-100
140set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000
141set /a TotalTime+=(%minute2%-%minute1%+60)%%60*60000+%second2%-%second1% 142if %TotalTime% lss %DelayTime% goto delay_continue
143goto :eof
复制代码
十、模拟进度条
下面给出一个模拟进度条的程序。如果将它运用在你自己的程序中,可以使你的程序更漂亮。
144@echo off
145mode con cols=113 lines=15 &color 9f
146cls
147echo.
148echo 程序正在初始化. . .
149echo.
150echo ┌──────────────────────────────────────┐
151set/p= ■ 152for /L %%i in (1 1 38) do set /p a=■ 153echo 100%% 154echo └──────────────────────────────────────┘ 155pause 复制代码 解说:“set /p a=■ 十一、特殊字符的输入及应用 开始-> 运行-> 输入cmd -> edit -> ctrl+p(意思是允许输入特殊字符)-> 按ctrl+a将会显示笑脸图案。 (如果要继续输入特殊字符请再次按ctrl+p,然后ctrl+某个字母) 以上是特殊字符的输入方法,选自[英雄]教程,很管用的。也就是用编辑程序edit输入特殊字符,然后保存为一文本文件,再在windows下打开此文件,复制其中的特殊符号即可。 一些简单的特殊符号可以在dos命令窗口直接输入,并用重定向保存为文本文件。 例: C:>ECHO ^G>temp.txt “^G”是用Ctrl+G或Alt+007输入,输入多个^G可以产生多声鸣响。 特殊字符的应用也很有意思,这里仅举一例:退格键 退格键表示删除左边的字符,此键不能在文档中正常输入,但可以通过edit编辑程序录入并复制出来。即“”。 利用退格键,可以设计闪烁文字效果 例:文字闪烁 156@echo off 157:start 158set/p=床前明月光 159::显示文字,光标停于行尾 160ping -n 0 127.0.0.1>nul 161::设置延迟时间 162set /p a= 163:: 输出一些退格符将光标置于该行的最左端(退格符的数量可以自己调整)。 164set /p a= 165::输出空格将之前输出的文字覆盖掉。 166set /p a= 167::再次输出退格符将光标置于该行的最左端,这里的退格符数量一定不能比前面的空格数少。 168::否则光标不能退到最左端。 169goto start 复制代码 例:输出唐诗一首,每行闪动多次 170@echo off 171setlocal enabledelayedexpansion 复制代码 set str=床前明月光疑是地上霜举头望明月低头思故乡 172::定义字符串str 173for %%i in (%str%) do ( 174rem 由于str中含有空格,则以空格为分隔符将str中的每一个部分依次赋给变量%%i。 175set char=%%i 176echo. 177echo. 178for /l %%j in (0,1,5) do ( 179set/p=!char:~%%j,1! 180rem 依次取出变量char中的每一个字符,并显示。 181ping -n 0 127.0.0.1>nul 182rem 设置输出每个字符的时间延迟。 183) 184call :hero %%i 185) 186pause>nul 187exit 188 189:hero 190for /l %%k in (1,1,10) do ( 191ping /n 0 127.0.0.1>nul 192set /p a= 193set /p a= 194set /p a= 195ping /n 0 127.0.0.1>nul 196set /p a=%1 197) 198::文字闪动 199goto :eof 复制代码 十二、随机数(%random%)的应用技巧 %RANDOM% 系统变量返回0 到32767 之间的任意十进制数字。由Cmd.exe 生成。 2的15次方等于32768,上面的0~32767实际就是15位二进制数的范围。 那么,如何获取100以内的随机数呢?很简单,将%RANDOM%按100进行求余运算即可,见例子。 例:生成5个100以内的随机数 200@echo off 201setlocal enabledelayedexpansion 202for /L %%i in (1 1 5) do ( 203set /a randomNum=!random!%%100 204echo 随机数:!randomNum! 205) 206pause 复制代码 运行结果:(每次运行不一样) 随机数:91 随机数:67 随机数:58 随机数:26 随机数:20 请按任意键继续. . . 求余数运算set /a randomNum=!random!%%100中的100可以是1~32768之间的任意整数。 总结:利用系统变量%random%,求余数运算%%,字符串处理等,可以实现很多随机处理。 思考题目:生成给定位数的随机密码 解答思路:将26个英文字母或10数字以及其它特殊字符组成一个字符串,随机抽取其中的若干字符。 参考答案1:(简单) 207@echo off 208call :randomPassword 5 pass1 pass2 209echo %pass1% %pass2% 210pause 211exit 212 213:randomPassword 214::---------生成随机密码 215::---------%1为密码长度,%2及以后为返回变量名称 216::---------for命令最多只能区分31个字段 217@echo off 218set password_len=%1 219if not defined password_len goto :eof 220if %password_len% lss 1 goto :eof 221set wordset=a b c d e f g h i j k l m n o p q r s t u v w x y z 222set return= 223set num=0 224:randomPassword1 225set /a num+=1 226set /a numof=%random%%%26+1 227for /f "tokens=%numof% delims= " %%i in ("%wordset%") do set return=%return%%%i 228if %num% lss %password_len% goto randomPassword1 229if not "%2"=="" set %2=%return% 230shift /2 231if not "%2"=="" goto randomPassword 232goto :eof 复制代码 参考答案2:(最优) 233@echo off 234call :randomPassword 6 pass1 pass2 pass3 DOS批处理脚本 这是一篇技术教程,真心诚意会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识。写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让它简单吧!看这篇教程的方法,就是慢!慢慢的,如同品一个女人、一杯茗茶,你会发现很多以前就在眼前的东西突然变的很遥远,而有些很遥远的东西却又突然回到了眼前。. 先概述一下批处理是个什么东东。批处理的定义,至今我也没能给出一个合适的----众多高手们也都没给出----反正我不知道----看了我也不一定信服----我是个菜鸟,当然就更不用说了;但我想总结出一个“比较合适的”,而且我也相信自己可以把它解释的很清楚,让更多的菜鸟都知道这是个什么东东,你用这个东东可以干什么事情。或许你会因为这篇文章而“无条件爱上批处理”,那么我的目的就达到了----我就是要让你爱上它,我就这么拽,你能怎么着??真的,爱有时候就这么拽,就是这么没理由,就是这么不要脸!真的! 按照我的理解,批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。 OK,never claver and get to business(闲话少说言归正传)。批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。批处理有一个很鲜明的特点:使用方便、灵活,功能强大,自动化程度高。我不想让自己写的教程枯燥无味,因为牵缠到代码(批处理的内容算是代码吧?)的问题本来就是枯燥的,很少有人能面对满屏幕的代码而静下心来。所以我会用很多简单实用的例子让读这篇教程的朋友去体会批处理的那四射的魅力,感受它那古灵精怪的性格,不知不觉中爱上批处理(晕,怎么又是爱?到底批处理和爱有什么关系?答案:没有!)。再说句“闲话”:要学好批处理,DOS基础一定要牢!当然脑子灵活也是很重要的一方面。 例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为name.bat然后执行(以后文中只给出代码,保存和执行方式类似): ping https://www.doczj.com/doc/2e2803130.html, > a.txt ping https://www.doczj.com/doc/2e2803130.html, >> a.txt ping https://www.doczj.com/doc/2e2803130.html, >> a.txt ping https://www.doczj.com/doc/2e2803130.html, >> a.txt ping https://www.doczj.com/doc/2e2803130.html, >> a.txt MS---DOS批处理文件 批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS 成组执行此批处理程序中的命令。 任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面MS-DOS命令是专门在批处理程序中使用的。 ====================================================== ========== 常用命令 echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。 ==== willsort 编注=================================================== 首先, @ 不是一个命令, 而是DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显. 下面是DOS命令行或批处理中可能会见到的一些特殊标记符: CR(0D) 命令行结束符 Escape(1B) ANSI转义字符引导符 Space(20) 常用的参数界定符 Tab(09) ; = 不常用的参数界定符 + COPY命令文件连接符 * ? 文件通配符 '' 字符串界定符 | 命令管道符 < > >> 文件重定向符 @ 命令行回显屏蔽符 / 参数开关引导符 : 批处理标签引导符 % 批处理变量引导符 其次, :: 确实可以起到rem 的注释作用, 而且更简洁有效; 但有两点需要注意: 第一, 除了:: 之外, 任何以:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用goto 所无法识别的标号, 即在:后紧跟一个非字母数字的一个特殊符号. 第二, 与rem 不同的是, ::后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比:: 更为适用; 另外, rem 可以用于config.sys 文件中. ====================================================== ========== echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 @与echo off相象,但它是加在每个命令行的最前面,表示运行时不显 Dos批处理Start命令的参数,bat脚本运行完毕后自动关闭 窗口 Dos批处理命令bat文件运行完以后自动关闭dos窗口的方法: 很多人运行完批处理命令发现dos窗口不能自动关闭,那是因为你在bat文件中直接执行了需要运行的某些外部程序,如果希望dos窗口自动关闭,那么,你可以使用start命令 来执行该外部程序,而不是直接写上一行来执行。例子说明: view plain copy start "CS" "c:\programme files\cs\half-life.exe" "/m" 上面只是一个使用格式的例子,即start "给窗口随便命个名" "带完整路径的程序程序" "程序需 要传递的参数串(可省略)" 当然,在你的批处理文件末尾,最好不要忘记加上一行:EXIT。请问Start命令中的/w参数怎么用? 我知道/w的大概意思是不回到提示符转到其它的程序。我想执行一条命令:即运行完DIR后再执行其它命令START dir cd c:\ /w。这条命令只能执行到DIR便不再执行下去了,是我的命令写错了吗? 另请问在START命令中为什么不能执行内部命令,我的DIR 是做了一条批处理的。 【参考回复】 请注意,Start会开启新窗口来运行程序,如果新窗口不正常退出,你的批处理就不能正常执行下去,所以如果你要用Start启用dir命令,一定要将dir命令写入一个批处理文件中,然后在批处理文件的最后面加上exit命令。正确的用法应该是这样: 1、建立使用dir命令的批处理如:test.bat view plain copy @echo off dir c:\ rem ....其它操作 exit 2、在另一个批处理中调用该批处理: view plain copy ... start /wait call test.bat ... 其实在这里就没有必要使用start /wait了,因为使用了call命令后,test.bat已经控制了流程,一定是在call结束后才会继续下一步的操作。 Start语法:启动另一个窗口运行指定的程序或命令。 view plain copy START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] 写批处理 扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 ==== willsort 编注======================================= .bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。 =================================== 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS 提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 ==== willsort 题注=================== 批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于wind ows系统这个新型解释平台的涉入,使得批处理的应用越来越"边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。 ======================== 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 ==== willsort 编注================== 批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的exe 文件才可以称之为c语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 =========================== 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch,你就可以在任意位置运行所有你编写的批处理程序。 ==== willsort 编注===== 纯以dos系统而言,可执行程序大约可以细分为五类,依照执行优先级由高到低排列分别是:DOSKEY宏命令(预先驻留内存),https://www.doczj.com/doc/2e2803130.html,中的内部命令(根据内存的环境随时进驻内存),以com为扩 DOS批处理文件 DOS下的可执行文件有三种,分别是EXE,COM和BAT。其中,EXE和COM文件都是二进制形式的,只有BAT文件是文本形式的,可以直接阅读。因此,BAT文件和以上二进制可执行文件相比,内容要简单的多。这些文件内包含着DOS命令的集合,通常叫作批处理文件。批处理文件的组成虽然比较简单,但其用处非常大,使用也比较广泛。比如每次都执行一些相同的命令,您一定会觉得非常麻烦,而放在批处理文件中执行的话则轻松得多。AUTOEXEC.BAT就是一个特殊的批处理文件,它在DOS的启动时自动运行,在系统的配置中发挥着非常大的作用。因此,要学好DOS,就要学好批处理文件。下面介绍批处理文件的命令及其使用。 DOS自带的批处理命令: @ :将这个符号放在批文件中其它命令的前面,运行时将不显示命令本身。如@ECHO OFF 命令就在批文件首经常用到。 CALL :从一个批文件中调用另一个批文件,调用完后继续执行原来的批文件。 用法:CALL [批文件名] 注:也可以使用COMMAND /C命令完成同样的操作。 CHOICE:选择命令。这是一个DOS外部命令,但它主要用在批文件中。CHOICE命令执行后将提示可选择的项目,这时通过一个按键来选则。 用法:CHOICE:[/C[:]按键表] [/N] [/S] [/T[:]选择值,秒数] [显示文本] 其中,/C表示可选则的按键,/N表示不要显示提示信息,/S表示大小写字符敏感方式,/T表示若在批定的时间内没有选则的话,自动执行/C中定义的某个选择值。显示文本是CHOICE命令执行时的提示信息。选择结果将用ERRORLEVEL值来表示。 ECHO:显示指定的信息。通常显示在屏幕上。 如ECHO Hello将在屏幕上显示Hello的字样。 另外,ECHO ON|OFF用来设置在批文件执行时是否显示命令本身。而ECHO OFF与@的意思一样,但它是一个单独的命令,而不能像@那样放在其它命令之前。 FOR:对于指定的文件运行相应的命令。 大家知道,DOS下许多命令支持通配符,如?和*,可以一次指定一批文件,非常方便。然而,并非所有的DOS命令都支持通配符,如TYPE(文件内容显示命令)就不支持。有了FOR命令就没有关系了,利于它可以使TYPE命令可以一次显示多个文件。 用法:FOR %变量名IN (文件集)DO 命令[命令参数] 注:以上是FOR命令的固定形式,IN和DO的位置必须正确,否则将提示语法错误。 如FOR %F IN (*.*) DO TYPE %F命令就可以实现TYPE命令一次显示多个文件。 注:%F是变量名,也可用%G等代替,但前后必须一致。在批文件中用%%F代替。 GOTO:转到批文件内部的某个标号下执行。 大家知道,在编程中往往需要重复或跳转到某个地方继续执行,如BASIC语言中的GOTO命令。批文件中的GOTO命令也可以完成类似的功能。 MS-DOS及Windows批处理文件的制作方法 批处理文件是无格式的文本文件,现在无盘清理基本都是靠它实现的,因为简单实用,它可以通过记事本编辑或者在命令提示符下使用edit命令编辑。下面就是方便大家怎样创建批处理文件的: 一简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on|off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 Sample:@echo off @echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。) 3.Goto 命令 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 语法:goto label (label是参数,指定所要转向的批处理程序中的行。) Sample: if {%1}=={} goto noparms if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。) @Rem check parameters if null show usage :noparms echo Usage: monitor.bat ServerIP PortNumber goto end 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是 从简单学起 echo、@、call、pause、rem 是批处理文件最常用的几个命令,我们就从他 们开始学起。echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身@与echo off 相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。 call 调用另一条批处理文件(如果直接调用别的批处理文件,执行完那条文件后将无法执行当前文件后续命令) pause 运行此句会暂停,显示Press any key to continue..等. 待用户按任意键后继续 rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的批处理命令大全(一)第一部分:批处理的专用命令批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件, 其扩展名为BAT。这些命令统称批处理命令,下面我就来给大家介绍一下批处 理的命令。 1、REM REM 是个注释命令一般是用来给程序加上注解的,该命令后的内容在程序 执行的时候将不会被显示和执行。例: REM 你现在看到的就是注解,这一句将不会被执行。在以后的例子中解释 的内容都REM会放在REM后面。请大家注意。 2、ECHO ECHO是一个回显命令主要参数有OFF和ON,—般用ECHOmessag来显示- 个特定的消息。例: Echo off Rem以上代表关闭回显即不显示所执行的命令 Echo这个就是消息 Rem 以上代表显示“这就是消息”这列字符 执行结果: C:\> 这个就是消息。 3、GOTO GOTO即为跳转的意思。在批处理中允许以 :XXX来构建一个标号然后用GOTO 标号直接来执行标号后的命令。例 :LABEL REM上面就是名为LABEL的标号。 DIR C:\ DIR D:\ GOTO LABEL REM以上程序跳转标号LABEL处继续执行。 4、CALL CALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理。例: 批处理内容如下: ECHO这就是2的内容 批处理内容如下: ECHO这是1的内容 CALL ECHO 1和2 的内容全部显示完成 将DOS批处理文件转换为Shell脚本 相当多的在PC上学习脚本的程序员都在运行DOS。事实上,残废的DOS批处理文件语言还是可以编写出一些比较强大的脚本来的,虽然它们一般都需要借助于外部的工具。所以说,某些时候,我们还是需要将老式的DOS批处理文件转换为UNIX shell脚本。一般来说,做这种事情并不困难,因为DOS批处理文件操作不过是等价的shell脚本的一个受限子集。 1.对照表 1.1.批处理文件关键字/ 变量/ 操作符 表格 L-1 批处理文件一般都包含DOS命令。我们必须把它转换为UNIX的等价命令,这样我们才能把批处理文件转换为shell脚本文件。 1.2.命令 表格 L-2 DOS命令与UNIX的等价命令 事实上,几乎所有的UNIX和shell操作符,还有命令都有许多的选项,对比DOS 和批处理文件来说,它们要强大的多。许多DOS批处理文件都需要依靠辅助工具,比如ask。com,这是一个比read命令差很多的类似副本。 DOS对于文件名通配符扩展支持的非常有限,并且很不完整,仅仅识别*和?。 2.示例 将DOS批处理文件转换为sehll脚本,通常是一件很简单的事情,而且转换的结果通常都比原始的批处理文件好。 例子 L-1. VIEWDATA.BAT: DOS批处理文件 1 REM VIEWDATA 2 3 REM 灵感来自于例子"DOS POWERTOOLS" 4 REM PAUL SOMERSON编写 5 6 7 @ECHO OFF 8 9 IF !%1==! GOTO VIEWDATA 10 REM 如果没有命令行参数。。。 11 FIND "%1" C:\BOZO\BOOKLIST。TXT 12 GOTO EXIT0 13 REM 打印出字符串匹配的行,然后退出。 14 15 :VIEWDATA 16 TYPE C:\BOZO\BOOKLIST.TXT | MORE 17 REM 显示整个文件,一次一页。 18 19 :EXIT0 转换脚本作了一些改进。 例子 L-2. Viewdata.sh: 转换自VIEWDATA.BAT的shell脚本 1 #!/bin/bash 2 # viewdata。sh 3 # 转换自VIEWDATA.BAT的shell脚本。 4 5 DATAFILE=/home/bozo/datafiles/book-collection。data bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由 外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是 由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。 所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都 是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序 仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。 =================================== 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部 分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批 处理文件。 ==== 注 =================== 批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普 通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的 应用越来越"边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行 环境中,否则很多观念和设定都需要做比较大的变动。 ======================== 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分 有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括 内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 ==== 注 ================== 批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为 c语言文件或者c语言源代码,但只有编译连接后的exe文件才可以称之为c 语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 =========================== 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所 在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个 一.简单批处理内部命令简介 先来看一个垃圾清理批处理文件吧 @echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemdrive%\*.log del /f /s /q %systemdrive%\*.gid del /f /s /q %systemdrive%\*.chk del /f /s /q %systemdrive%\*.old del /f /s /q %systemdrive%\recycled\*.* del /f /s /q %windir%\*.bak del /f /s /q %windir%\prefetch\*.* rd /s /q %windir%\temp & md %windir%\temp del /f /q %userprofile%\recent\*.* del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*" del /f /s /q "%userprofile%\Local Settings\Temp\*.*" del /f /s /q "%userprofile%\recent\*.*" echo 清除系统垃圾完成~ echo. & pause 将上面的内容保存为*.bat就可以运行了,清理系统垃圾 下面是详细讲解 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当 前回显设置。 语法 echo [{on|off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^) FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法! 先把FOR的变量全部列出来: ~I - 删除任何引号("),扩展%I %~fI - 将%I 扩展到一个完全合格的路径名 %~dI - 仅将%I 扩展到一个驱动器号 %~pI - 仅将%I 扩展到一个路径 %~nI - 仅将%I 扩展到一个文件名 %~xI - 仅将%I 扩展到一个文件扩展名 %~sI - 扩展的路径只含有短名 %~aI - 将%I 扩展到文件的文件属性 %~tI - 将%I 扩展到文件的日期/时间 %~zI - 将%I 扩展到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将%I 扩展到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串 我们可以看到每行都有一个大写字母"I",这个I其实就是我们在FOR带入的变量,我们FOR语句代入的变量名是什么,这里就写什么. 比如:FOR /F %%z IN ('set') DO @echo %%z 这里我们代入的变量名是z那么我们就要把那个I改成z,例如%~fI改为%~fz 至于前面的%~p这样的内容就是语法了! 好开始讲解: 一、~I - 删除任何引号("),扩展%I 这个变量的作用就如他的说明,删除引号! 我们来看这个例子: 首先建立临时文件temp.txt,内容如下 "1111 "2222" 3333" "4444"44 "55"55"55 可建立个BAT文件代码如下:@echo off 2echo ^"1111>temp.txt 3echo "2222">>temp.txt 4echo 3333^">>temp.txt 5echo "4444"44>>temp.txt 6echo ^"55"55"55>>temp.txt 复制代码 rem 上面建立临时文件,注意不成对的引号要加转义字符^,重定向符号前不要留空格 COMMAND DOS批处理命令大全 帮助文件 WING 12 目录 MOVE /? (3) COPY /? (3) DEL /? (4) AT /? (5) TIME [/T | time] (5) DATE [/T | date] (6) GOTO /? (6) CALL /? (6) FOR /? (8) SET /? (11) REG Operation /? (15) dir /? (23) md /? (24) chdir /? (24) C:\>ren /? (25) diskcopy /? (26) xcopy /? (26) path /? (30) chkdsk /? (30) format /? (31) MOVE /? 移动文件并重命名文件和目录。 要移动至少一个文件: MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination 要重命名一个目录: MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2 [drive:][path]filename1 指定您想移动的文件位置和名称。 destination 指定文件的新位置。目标可包含一个驱动器号 和冒号、一个目录名或组合。如果只移动一个文件 并在移动时将其重命名,您还可以包括文件名。 [drive:][path]dirname1 指定要重命名的目录。 dirname2 指定目录的新名称。 /Y 取消确认改写一个现有目标文件的提示。 /-Y 对确认改写一个现有目标文件发出提示。 命令行开关 /Y 可以出现在 COPYCMD 环境变量中。这可以用命令行上 的 /-Y 替代。默认值是,除非 MOVE 命令是从一个批脚本内 执行的,改写时都发出提示。 COPY /? 将一份或多份文件复制到另一个位置。 COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B] [+ source [/A | /B] [+ ...]] [destination [/A | /B]] source 指定要复制的文件。 /A 表示一个 ASCII 文本文件。 /B 表示一个二进位文件。 /D 允许解密要创建的目标文件 destination 为新文件指定目录和/或文件名。 /V 验证新文件写入是否正确。 /N 复制带有非 8dot3 名称的文件时, 1、*.*的简写 *.*可以用.代替,例如,删除当前目录中的全部文件∶ DEL. 2、返回父目录即上级目录 CD.. 3、把目录文件的列表存入文本文件中 DIR>filename 4、查看当前目录下任何属性的文件 方法一∶DIR, 方法二∶DIR/A 5、取消当前目录下所有文件的所有属性(实际上只能查看属性而不能取消-jm注) ATTRIB, 若在C盘根目录下执行此命令,再用DIR来查看,可以看到IO.SYS、MSDOS.SYS等隐含文件 6、显示当前目录下的所有子目录名 DIR/AD 7、连续显示多个文件的内容 COPY *.* CON 8、分屏显示文件内容 方法一∶MORE 方法二∶COPY filename+,, 10、如何屏蔽DOS行的输出信息? 方法是将屏幕输出重定向到DOS空设备NUL,例如∶ COPY MYPROG.EXE A:>NUL 11、在DOS状态下直接显示用D方式编辑的WPS文件内容 COPY filename.wps CON/B 12、向文本文件中追加数据 方法一∶COPY filename+CON 方法二∶TYPE CON>>filename 输入完毕后按F6或Ctrl+Z键结束。 13、键盘指法练习或汉字输入练习的简易屏幕 COPY CON NUL 14、直接打印键盘输入的内容 方法一∶COPY CON PRN 方法二∶MORE>PRN 方法三∶SORT>PRN 输入完毕后按F6或Ctrl+Z键。 15、DOS下直接编辑生成文件 在没有任何编辑软件(如EDLIN、EDIT等)的情况下,可临时用以下六种方法从键盘编辑生成文件,当文件内容输入完毕后,按F6键或按Ctrl+Z键存盘退出∶ 方法一∶COPY CON filename Dos批处理Start命令的参数 Dos批处理命令bat文件运行完以后自动关闭dos窗口的方法: 很多人运行完批处理命令发现dos窗口不能自动关闭,那是因为你在bat文件中直接执行了需要运行的某些外部程序,如果希望dos窗口自动关闭,那么,你可以使用start 命令来执行该外部程序,而不是直接写上一行来执行。例子说明: start "CS" "c:\programme files\cs\half-life.exe" "/m" 上面只是一个使用格式的例子,即start "给窗口随便命个名" "带完整路径的程序程序" "程序需要传递的参数串(可省略)" 当然,在你的批处理文件末尾,最好不要忘记加上一行:EXIT 请问Start命令中的/w参数怎么用? 我知道/w的大概意思是不回到提示符转到其它的程序。我想执行一条命令:即运行完DIR后再执行其它命令START dir cd c:\ /w。这条命令只能执行到DIR便不再执行下去了,是我的命令写错了吗? 另请问在START命令中为什么不能执行内部命令,我的DIR是做了一条批处理的。 『参考回复』 请注意,Start会开启新窗口来运行程序,如果新窗口不正常退出,你的批处理就不能正常执行下去,所以如果你要用Start启用dir命令,一定要将dir命令写入一个批处理文件中,然后在批处理文件的最后面加上exit命令。 正确的用法应该是这样: 1、建立使用dir命令的批处理如test.bat: @echo off dir c:\ rem ....其它操作 exit 2、在另一个批处理中调用该批处理: ... start /wait call test.bat ... 其实在这里就没有必要使用start /wait了,因为使用了call 命令后,test.bat已经控制了流程,一定是在call结束后才 批处理文件是无格式的文本文件,它包含一条或多条命令。 它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。 使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后面要提到的用批处理文件来给系统打补丁、批量植入后门程序等。 下面就开始我们批处理学习之旅吧。 (本文因篇幅较长,所以分成两部份。前半部份讲命令,后半部分讲实例分析。) 一、简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 Sample:@echo off @echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。) DOS批处理高级教程精选合编20080331(windows Xp) 前言 本教程主要引用伤脑筋版主(https://www.doczj.com/doc/2e2803130.html,)的系列文章,同时参考引用[英雄]教程等其他批处理教程,本文将这些文章合并在一起,并适当修改,修改整理也是学习过程,力求深刻而又简单易懂,主要目的是方便自己以后查阅。 本教程很长啊,需要一定的耐心才能看完,能够看完的话,差不多就是批处理高手了,即使不是高手也是熟手了。如果连续不停的看完本教程而且理解得差不多,估计人也累趴下了。本教程适合对dos有一定基础的人慢慢学习或查阅。 查阅方法:复制目录中的条目,搜索即可。 目录 第一章批处理基础 第一节常用批处理内部命令简介 1、REM 和 :: 2、ECHO 和 @ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和 : 9、FIND 10、START 11、assoc 和 ftype 12、pushd 和 popd 13、CALL 14、shift 15、IF 16、setlocal 与变量延迟 17、ATTRIB 显示或更改文件属性 第二节常用特殊符号 1、@ 命令行回显屏蔽符 2、% 批处理变量引导符 3、> 重定向符 4、>> 重定向符 5、<、>&、<& 重定向符 6、| 命令管道符 7、^ 转义字符 8、& 组合命令 9、&& 组合命令 10、|| 组合命令 11、"" 字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 第二章 FOR命令详解 一、基本格式 二、参数 /d 三、参数 /R 四、参数 /L 五、参数 /F 第三章 FOR命令中的变量 一、~I - 删除任何引号("),扩展 %I 二、%~fI - 将 %I 扩展到一个完全合格的路径名 三、%~dI - 仅将 %I 扩展到一个驱动器号 四、%~pI - 仅将 %I 扩展到一个路径 五、%~nI - 仅将 %I 扩展到一个文件名 六、%~xI - 仅将 %I 扩展到一个文件扩展名 七、%~sI - 扩展的路径只含有短名 八、%~aI - 将 %I 扩展到文件的文件属性 九、%~tI - 将 %I 扩展到文件的日期/时间 十、%~zI - 将 %I 扩展到文件的大小 十一、 %~$PATH:I 第四章批处理中的变量 一、系统变量 二、自定义变量 第五章 set命令详解 一、用set命令设置自定义变量 二、用set命令进行简单计算 三、用set命令进行字符串处理 1、字符串替换 2、字符串截取 第六章 if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command 第二种用法:IF [NOT] string1==string2 command 第三种用法:IF [NOT] EXIST filename command 第四种用法:IF增强的用法 第七章 DOS编程高级技巧 一、界面设计 批处理中的变量,我把他分为两类,分别为"系统变量"和"自定义变量" 我们现在来详解这两个变量! 一、系统变量 他们的值由系统将其根据事先定义的条件自动赋值,也就是这些变量系统已经给他们定义了值, 不需要我们来给他赋值,我们只需要调用而以! 我把他们全部列出来! %ALLUSERSPROFILE% 本地返回“所有用户”配置文件的位置。 %APPDATA% 本地返回默认情况下应用程序存储数据的位置。 %CD% 本地返回当前目录字符串。 %CMDCMDLINE% 本地返回用来启动当前的Cmd.exe 的准确命令行。 %CMDEXTVERSION% 系统返回当前的“命令处理程序扩展”的版本号。 %COMPUTERNAME% 系统返回计算机的名称。 %COMSPEC% 系统返回命令行解释器可执行程序的准确路径。 %DATE% 系统返回当前日期。使用与date /t 命令相同的格式。由Cmd.exe 生成。有关date 命令的详细信息,请参阅Date。 %ERRORLEVEL% 系统返回上一条命令的错误代码。通常用非零值表示错误。 %HOMEDRIVE% 系统返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 %HOMEPATH% 系统返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 %HOMESHARE% 系统返回用户的共享主目录的网络路径。基于主目录值而设置。 用户主目录是在“本地用户和组”中指定的。 %LOGONSERVER% 本地返回验证当前登录会话的域控制器的名称。 %NUMBER_OF_PROCESSORS% 系统指定安装在计算机上的处理器的数目。 %OS% 系统返回操作系统名称。Windows 2000 显示其操作系统为Windows_NT。%PATH% 系统指定可执行文件的搜索路径。 %PATHEXT% 系统返回操作系统认为可执行的文件扩展名的列表。 %PROCESSOR_ARCHITECTURE% 系统返回处理器的芯片体系结构。值:x86 或IA64 基于Itanium %PROCESSOR_IDENTFIER% 系统返回处理器说明。 %PROCESSOR_LEVEL% 系统返回计算机上安装的处理器的型号。 %PROCESSOR_REVISION% 系统返回处理器的版本号。 %PROMPT% 本地返回当前解释程序的命令提示符设置。由Cmd.exe 生成。 %RANDOM% 系统返回0 到32767 之间的任意十进制数字。由Cmd.exe 生成。%SYSTEMDRIVE% 系统返回包含Windows server operating system 根目录(即系统根目录)的驱动器。 %SYSTEMROOT% 系统返回Windows server operating system 根目录的位置。%TEMP% 和%TMP% 系统和用户返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要TEMP,而其他应用程序则需要TMP。 %TIME% 系统返回当前时间。使用与time /t 命令相同的格式。由Cmd.exe 生成。有关time 命令的详细信息,请参阅Time。 %USERDOMAIN% 本地返回包含用户帐户的域的名称。 %USERNAME% 本地返回当前登录的用户的名称。 %USERPROFILE% 本地返回当前用户的配置文件的位置。 一.简单批处理部命令简介 先来看一个垃圾清理批处理文件吧 echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemdrive%\*.log del /f /s /q %systemdrive%\*.gid del /f /s /q %systemdrive%\*.chk del /f /s /q %systemdrive%\*.old del /f /s /q %systemdrive%\recycled\*.* del /f /s /q %windir%\*.bak del /f /s /q %windir%\prefetch\*.* rd /s /q %windir%\temp & md %windir%\temp del /f /q %userprofile%\recent\*.* del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*" del /f /s /q "%userprofile%\Local Settings\Temp\*.*" del /f /s /q "%userprofile%\recent\*.*" echo 清除系统垃圾完成~ echo. & pause 将上面的容保存为*.bat就可以运行了,清理系统垃圾 下面是详细讲解 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当 前回显设置。 语法DOS批处理脚本
MS-DOS批处理文件详解
dos批处理start命令的参数bat脚本运行完毕后自动关闭窗口
DOS批处理命令大全
DOS编程及命令
MS-DOS及Windows批处理文件的制作方法
DOS批处理教程精选简单易懂
将DOS批处理文件转换为Shell脚本
windows批处理文件(.bat&)
dos批处理命令小程序
DOS批处理高级教程:第三章 FOR命令中的变量
DOS批处理命令大全
DOS批处理命令
Dos批处理 Start命令的参数
批处理bat实用实例
新手学习的DOS批处理高级教程全集
DOS批处理高级教程:第四章 批处理中的变量
dos批处理命令小程序文件