Dos一些常识
1
2
3
4
5
1、Dos程序运行完后都有返回码,可以帮助我们诊断程序运行情况。
2、编辑批处理命令,所有字符必须在英文格式和半角状态下编辑。
3、按下Ctrl+C组合键可以强行终止批处理运行。
4、批处理认行不认命令数目。这是说批处理对断行很敏感,而对于一行有多少命令倒是无所谓,只要用&、&&、|、||等连接好就行。
5、“-”和“/”是等价的。例如“shutdown /s”等价于“shutdown -s”。
查看命令帮助
1
2
3
4
5
6
1、使用help命令查看帮助(有时候不管用)
例如: help rename
2、使用x查看相关的帮助信息(有时候不管用)
例如: shutdown x
3、使用 /? 查看相关的帮助信息(最常用)
例如: rename /?

注意:不要过度迷信 DOS 下的帮助信息,命令的帮助信息往往很难看懂或者有一小部分是错的。 例如 FOR 命令的帮助信息,初学者阅读起来简直就是在看天书。又例如我们查看“set”命令的帮助命令,就会发现它没有把“按位‘与’”的符号列出来。所以,一切都以实际操作通过为准。

基础命令
1
2
3
4
5
del desktop.ini   #删除desktop.ini文件
rename before.cmt after.cmd #将 before.cmt 文件重命名为 after.cmd
rem 和 :: #用于批处理的注解,在批处理文件或者CONFIG.SYS里加上注解或说明
%注释内容% #使用两个百分号也可以进行内容注释,这种用法利用了%的特殊性,这种邪恶用法应该摒弃
title Hello World! #用于将命令行终端的标题改名为 Hello World!
echo命令tips
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
echo + 信息  #表示使用echo在命令行输出信息
例如: echo Hello World! #表示使用echo在命令行输出Hello World!
注意,echo后必须紧跟一个空格或者特殊字符,以区分echo命令和信息,该空格或特殊字符不会作为信息被显示出来
例如:
以下命令是等效的,均为输出Hello World!
echo Hello World!
echo.Hello World!
echo/Hello World!
echo+Hello World!
echo(Hello World!
echo[Hello World!
echo]Hello World!
echo:Hello World!
echo=Hello World!
echo,Hello World!
echo;Hello World!

echo中的特殊字符输出
若要输出的字符为 + - * / \ ( ) ? ; . , " ' : :: ~ @ `
则直接使用echo 输出即可
例如: echo + # 将在命令行输出字符 +
若要输出的字符为 ^ > >> < << & && | ||
则需要使用 echo中的 ^ 对这些特殊字符进行处理,^字符为echo中的转义字符
例如:
echo ^< # 将在命令行输出字符 <
echo ^| # 将在命令行输出字符 |

使用nul阻止echo信息显示
例如:echo Hello World!>nul # 将echo的内容输出到nul可以阻止echo信息显示
for语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
语法:
FOR [-d | -l | -r | -f] %%variable IN (set) DO command [command-parameters]

/d
只搜索当前目录下的目录(也就是文件夹,不包括子目录)。注意:/d 无法搜索到隐藏的文件夹。
例子:
for /d %i in (C:\*) do echo %i # 搜索 C盘下的非隐藏文件夹

/r
只搜索目录中(包括子目录和子目录的子目录,也就是目录树)的所有文件。这个和/d 作用互补。
如果在 /r 后没有指定目录,则使用当前目录。如果 set 仅为一个单点(.)字符,则枚举该目录树。
/r 可以把当前或者你指定路径下的文件名字全部读取,注意是文件名
字。
注意两点:
1、set 中的文件名如果含有通配符(?或*),则列举/r 参数指定的目录及其下面的所用子目录中的与 set 相符合的所有文件,无相符文件的目录则不列举。
2、相反,如果 set 中为具体文件名,不含通配符,则枚举该目录树(即列举该目录及其下面的所有子目录),而不管 set 中的指定文件是否存在。这与前面所说的单点(.)枚举目录是一个道理,单点代表当前目录,也可视为一个文件。

for /r c:\ %i in (*.exe) do (echo %i & pause > nul) # 打印C盘下所有的exe文件,并每输出一条就暂停
for /r C:\ %i in (boot.ini) do if exist %i echo %i

/l
语法格式:
FOR /L %%variable IN (start,step,end) DO command [command-parameters]从 start 开始,以 step 为步长,直至最接近 end 那个整数为止,这中间有多少个整数,do 后面就执行多少次。