DOS:批处理命令

batch file programming:批处理既是程序也是一种脚本

内部命令、外部命令:

# DOS:批处理命令_DOS

当你输入的命令无法识别的时候就会报错。

什么是内部命令呢?内部命令就是DOS自有的命令,比如 ipconfig,ping等

而外部命令就是 python,Java 等应用程序自己的命令

DOS命令基本格式

主命令 + 子命令 + 参数

以shutdown为例

# DOS:批处理命令_操作系统_02

或者:

shutdown [ -i | -l | -s | -r | -a | -p | -h | -e] [-f] [-m \\Computer] [-t XXX] [-d [p|u:] XX:YY [-c "comment"]]

这里的方括号和其他的一些符号都是提示性的,在实际的命令中并不用键入

shutdown是主命令 -/等价 \ 反斜杠符号用于路径中

[ ] 方括号是可选参数,即你可以有也可以没有,| 是你最多只能在这些参数中选一个

尖括号 < > 表示可选参数下的子参数

大括号 {} 表示其中的项必选一项

省略号 ... 表示可重复输入的项

命令帮助信息

/?

/help

-help

获得命令的帮助信息,类似于Linux中的 man,help

直接输入命令而不加选项和参数也可以显示命令帮助信息

# DOS:批处理命令_操作系统_03

@echo off:关闭盘符

当我们键入 echo hello world时

# DOS:批处理命令_DOS_04

会打印盘符,如果我们不想要输出这个信息,就可以使用这个命令。

# DOS:批处理命令_DOS_05

如上图所示,使用了该指令后,输入echo hello world,会打印hello world 而不会输出盘符信息。

echo:输出

pause:就是c语言中的system(“pause"),保持等待输入

cls:清屏 clear screen

算术运算

set /a [参数 ]

/a 表示要进行算术运算,方括号所代表的是带运算的式子

比如说:

# DOS:批处理命令_DOS_06

设置一个变量var:

# DOS:批处理命令_DOS_07

输出变量值:

echo %var%:输出变量var的值,并不能识别出单独var是一个变量,所以加%

# DOS:批处理命令_操作系统_08

重定向运算

将数据或结果移交给下一个命令或文件中

  1. > 重定向

# DOS:批处理命令_操作系统_09

  1. >> 重定向 和上一个的区别在于,本命令会在文件的尾部叠加输入,而单个 > 会导致输入把初始的文件内容覆盖
  2. < 和第一个作用一样,区别在于数据流的方向上,a > b :是把a的内容覆盖b a>b:b内容覆盖a
  3. << 同上

多命令运算

&& 与的作用

可以同时使用两个命令,需要注意的是这个命令符有短路作用,即第一个命令错的时候,第二个就不会执行了

# DOS:批处理命令_DOS_10

在这里两个命令都执行了

|| 或的作用

同时使用两个命令,即使第一个命令为假,但还是会执行第二个命令;但是如果第一个命令就为真的话就不会执行第二个命令,断路作用

# DOS:批处理命令_DOS_11

从图中可以看出,第一个命令有问题,但是第二个命令却执行了

# DOS:批处理命令_DOS_12

从图中可以看出二者的区别,第一个“与”中echo命令是有问题的,所以没有执行后面的type命令,而”或“命令中即使前一个”echo“有问题,但依然执行了后面的”type“命令

管道命令

|

注意这里是一竖, 例如 A|B 将A命令的输出作为B命令的输入

# DOS:批处理命令_操作系统_13

第一个命令得到的输出,然后从这些输出作为第二个命令的输入,find是找出这些输入中是ESTABLISHED的项

bat文件参数传递

%

# DOS:批处理命令_DOS_14

在bat文件中,这个 % 就代表了是参数变量,当我们运行这个bat文件并在后面协商参数,就会把这些参数传入到这些变量并替代。需要注意的是,变量是有顺序的,如图所示,我们先传递的“hello”替代了%1,而%1再%2的后面,所以说他会晚于%1输出结果。

# DOS:批处理命令_操作系统_15

注释符

rem + 注释内容

# DOS:批处理命令_操作系统_16

调用其他bat文件

call

直接命令 + 要调用的bat文件就行

# DOS:批处理命令_DOS_17

不过虽然可以调用其他的bat文件,但是却无法向其传递参数

# DOS:批处理命令_操作系统_18

这个是无法给2.bat传递参数的

任务查看

tasklist

显示当前主机或者远程主机正在运行的任务列表

1.查看远程主机的任务列表

当我们知道远程主机的IP地址,就可以查看该主机上的任务列表了,但前提是需要身份认证的

tasklist  /S  192.168.1.1  /U [username]   /P  [password]

任务关闭

taskkill

关闭某个正在进行的任务

更多参数查看 help

关机、重启命令

shutdown

计划任务命令

在每天固定指定某个exe文件

at 该命令已在win10中禁用 改成了schtasks

批处理环境变量

set

设置变量,同时也可以显示本机当前的环境变量

# DOS:批处理命令_DOS_19

输出某个环境变量,这个变量要加两个 % 才行

文件处理命令

目录查看命令

dir

会显示当前路径下的所有目录信息

相关参数:

文件夹结构查看

tree 以树形结构展示本目录

文件内容查看:

type:

查看文件详细内容

新建目录

md 或 mkdir

md [盘符][路径]

执行这个命令后在当前路径下创建了一个 test 目录

删除目录

rd 或 rmdir 类似于 rm

rd [盘符][路径] 但该命令只能删除空目录

执行这条指令后,将删除当前路径下的test目录

因为test目录不为空,如果用该命令删除该目录,会报错,所以 rd 并不能删除非空目录

切换目录

cd

文件重命名

ren 或 rename

将test目录的名称改为test1

目录复制

copy

将1.bat文件复制到test1目录中

删除文件

del

删除当前路径下的1.bat文件

移动文件或重命名

move

将b目录下的1.bat文件移动到当前路径下

网络命令

net user

显示用户成员

net user username

显示用户的详细信息,如下所示

net user username userpwd 修改用户密码

将用户的密码改为userpwd

net user username userpwd /add 添加用户

添加一个用户,其用户名为username 密码是userpwd

用户组操作命令

net localgroup

显示用户组信息

ner localgroup users

显示users用户组的用户成员

net localgroup groupName user /add

向groupName用户组添加user用户 将admin用户添加到administrators用户组当中

net localgroup groupName /add

添加用户组

添加后的结果中多了一个testgroup组

主机连通性

ping

发送ICMP数据包到目标主机

网络远程连接命令

telnet

条件判断语句

if-else

这里的else必须和if在同一行才行,判断条件不用加括号,但是执行语句要加括号

判断文件是否存在

exist

循环结构

for