CMD/DOS批处理

发布于 2020-09-09  375 次阅读


CMD(command)是windows系统命令提示符程序,它提供了查询系统信息和网络信息,Dos是磁盘操作系统,早期它是单独存在的,在计算机发展与操作系统整合兼容,并可以在cmd窗口中直接操作dos(在cmd中没有明确区分cmd和dos的命令),在对磁盘文件的操作都属于dos的范畴,Cmd和Dos是批处理的基础

一,CMD的基础知识

1,变量

变量:可以被赋值的改变的量

1.1,变量的设置

set :变量设置命令,也可以进行算术运算(通过set可以临时设置环境变量)

/A 执行算术运算

/p 变量的手动输入赋值

1.2,变量的读取

格式:%变量名%

一个%%中间一个变量名来提醒系统这是一个变量,如果是单纯的变量名就会当成普通字符串处理

2,管道和重定向+命令的并行

2.1,管道

windows和Linux的管道概念是一样的,是一个传输桥梁,就是把一个命令的输出通过通过管道传入给另一个命令作为输入,在find筛选查询时常用

用  |  来表示管道

2.2,重定向

重定向就是把一个文件的内容输入到另一个文件,就不会在打印输出

》:  重定向文件,但会覆盖

》》: 重定向文件,追加

2.3,命令的并行

||:不具有短路,第一个命令的错误不会影响

&&:具有短路,第一个命令错误会影响第二个命令的执行

3,批处理文件参数的接收

在批处理文件中通过 %任意数字 的方式来接收参数,数字的大小来判断是对应那个位置的参数

如一个文件(w.cmd)内:

echo off
echo %1 
echo %2
pause

4,回显

echo 功能:

1,可以显示输入内容

2,可以开启关闭回显

回显:就是首部的提示

5,注释

cmd的注释方式有多种:

1,::注释内容(常用)

2,rem 注释内容

3,:注释内容(不能和程序段重名)

二,cmd网络命令(参数只写常用的)

一,ping

ping 命令其实是一个应用程序,在网络模型的IP网络层中,icmp用来返回错误信息和网络状况,IP像传输层的UDP一样是无连接的,错包不能检验,ping程序就是依赖于icmp

ping  IP地址或者域名

/n  :指定ping命令要回显的条数 ,必须指定数量

二,ipconfig

与Linux的ifconfig一样,查看本地网络信息

/all:查看完整的信息,如:DHCP,物理地址

/displaydns:显示dns解析程序缓存的内容

/flushdns:清空dns解析程序缓存的内容

/release:释放IPV4的地址(地址释放:指动态地址的释放,当要访问外网地址时,DHCP会在公网上拿一个空闲的地址)

/relese6:释放了IPV6的地址

三,tracert

在网络模型的路由层,IP寻址的逐跳的,在不同的路由器之间跳跃,tracert可以显示追踪你经过的路由节点和对应路由的IP地址

/h :设置追踪路由数量,如:/h 2 只追踪2个节点

/w:设置超时时间

四,telnet

telnet是TCP/IP协议中的一员,是一个基于TCP/IP个的远程登录服务的标准协议,它可以远程连接其它主机和服务器,发送消息,但他是不安全的,没有加密,可以被轻易的抓取,现在没有什么实际用途

在windowns中telnet服务默认是关闭的,打开步骤:控制面板  ->  程序  ->  启动或关闭window功能  ->  勾选telnet功能

telnet  IP号  端口号

例:在Linux 通过nc -l -h 启动一个监听端口,telnet连接端口,发送信息

五,arp

arp:物理地址映射

在不同网络主机的信息传输中,信息IP头部通过路由器来寻址具体IP所在的局域网位置,但信息的真正发送是依赖于物理地址的,有物理地址就能真正传输字节数据,

从IP地址到物理地址就需要arp的映射,arp表缓存了IP和物理的映射关系

/a:显示本地的arp表

/s:手动添加arp的映射关系

三,cmd文件命令

1,文件和文件夹的创建

1.1,文件夹的创建

rmdir 文件名

1.2,文件的创建

在window中和linux(touch)不同他没有指定创建文件命令,cmd文件的创建的依赖重定向

echo 文件内容 > 文件名.后缀名

echo回显数据

》把回显数据重定向到文件,假如没有文件就创建一个文件

第二种方式创建文件:

fsutil  file createfile 文件名 大小

这种方式需要指定文件的大小,可以恶搞

1.3,文件夹和文件的查看

1.3.1,文件夹的查看

dir:查看文件夹中的所有文件,可以通过find查指定文件

1.3.2,文件的查看

type 文件名 :查看文件内容

1.4,文件的重命名和删除

1.4.1,文件的重命名

rename(ren) 原文件名 当前文件名

1.4.2,文件的删除

del 文件名

/P :删除一个文件时提示是否删除

/Q:安静模式,不需要确认

/S:如果有子文件,则递归删除文件

/F:强制删除文件

1.4.3,文件的移动

move 文件名 路径

1.5,文件的属性修改

在cmd中文件的属性修改用attrib

attrib 参数  文件名

通过+ - 来增加或减少属性

+:增加属性

-:消除属性

R:只读文件属性

H:隐藏文件属性

A:存档文件属性

O:脱机文件属性

1.6,文件拓展名关联

在windows中不同的拓展名都关联了对应的解析程序,如:.txt = .txt .txt关联了.txt的拓展名解析程序

我们可以增加修改拓展名关联如 .txt =oo oo是不存在的,之后写文本就会报错

assoc 拓展名 = 关联的解析程序

四,cmd系统命令

一,系统的关闭,重启,注销

windows的关闭重启锁定都有shutdown

格式:shutdown 参数

主要参数:

/h:休眠计算机

/s:关闭计算机,有超时或者警告    /p:关闭计算机,没有超时和警告

/r:重启计算机

/l:注销计算机

其他参数:
/t   时间(秒):定时关机,多少时间之后关机

/c  "内容":注释为什么关机

/i:打开GUI关机界面

/f:强制关机

远程关机GUI界面:

二,系统进程的查看,启动和关闭

一,进程的查看

taskkill

远程查看参数:

/s IP地址:指定要连接的远程系统

/u 用户名:指定远程系统的用户(可选项)

/p 密码:选择用户名就需要密码

其他查看参数:

/v:查看详细信息

/FO:指定输出格式,有效值"table","list","csv"

/SVC:显示每一个进程主持的服务

/HN:列标题不输出显示

条件查询:

/m:通过模块来查询(exe/dll服务)

格式:/m  关键字*    (*:通配符)

重点:

/FI :指定筛选器来查询指定信息

筛选器:

筛选器名称 有效运算符 有效值
----------- --------------- --------------------------
STATUS eq, ne RUNNING | SUSPENDED
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne 映像名称
PID eq, ne, gt, lt, ge, le PID 值
SESSION eq, ne, gt, lt, ge, le 会话编号
SESSIONNAME eq, ne 会话名称
CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为
hh:mm:ss。
hh - 小时,
mm - 分钟,ss - 秒
MEMUSAGE eq, ne, gt, lt, ge, le 内存使用(以 KB 为单位)
USERNAME eq, ne 用户名,格式为
[域\]用户
SERVICES eq, ne 服务名称
WINDOWTITLE eq, ne 窗口标题

筛选器名称指筛选器的类型:

pid :通过pid来查询

二,进程启动

start  进程名(或者PID)

参数:

P:不在新窗口开启

max:最大化窗口开起

min:最小化窗口关闭

三,进程关闭

taskkill 进程关闭和tasklist进程查看形式基本一致

远程操作(前提对方主机要打开远程操作):

/s:指定主机名

/u:指定用户

/p:密码

常用参数:

/im:用进程的映像名称来关闭,如:/im exporer.exe

/pid:用用户pid来关闭        如:/pid 1400

/fi:用筛选器来关闭一系列进程,和taskliat一样

/f:强制关闭

三,系统用户操作

在对系统用户信息的增删改查通过  net user 参数 来实现

查看用户信息:

net user :直接可以查看系统的用户信息

增加用户:

net user /add 用户名 密码(可选项)

删除用户:

net user /del 用户名 密码(可选项)

四,cmd脚本编写

严格意义上命令不区分脚本命令和命令行命令,但使用时命令之间是有区别的,这里我把它分为两类(脚本命令,命令行命令),有些脚本命令不适合命令行,如:call 脚本文件在内部调用其他文件,

一,脚本常用命令

1,pause

pause是批处理常用命令

作用:暂停批处理程序,并显示 "请按任意键继续. . ."  信息

2,程序内部调用

call 文件路径

3,程序输入

set之前说过

set /p 变量名 = "提示信息"

4,程序段的跳转

cmd脚本其实也是面向过程的高级语言,它不像面向对象的java,它通过goto来实现代码间的调用

格式:goto 程序段标识

注:goto本身是自带循环的,如果没有终止会一直调用,可以用exit退出当前程序段

程序段的定义:它就相对于java中的方法

:程序段名称

例:
::无限窗口
echo off
:WQL  
start cmd
goto WQL

二,脚本语法

cmd脚本比较简单,它的主要结构除了程序段的定义就是if语句和for循环

一,IF语句

格式:if  判断条件 (执行语句)  else (执行语句)

与java的if不同,cmd的IF条件判断分四种:

1,判断字符串

if " 字符 "= "字符" (执行语句) else (执行语句)

2,文件的判断

判断文件是否存在

if  exist 文件路径 (执行语句) else (执行语句)

3,判断变量是否被赋值

if defined 变量名 (执行语句) else (执行语句)

4,判断数值

if 数值1  条件 数值2 (执行语句)  else (执行语句)

条件:

等于        equ    equal
大于        gtr    greater than
大于或等于    geq    greater than or equal
小于        lss    less than
小于或等于    leq    less than or equal
不等于        neq    no equal

二,for循环

格式:for  参数 变量名 in(集) do 执行操作

变量的表现形式:

脚本中:%%名称

命令行:%名称

一,遍历文件

格式:for /l 变量 in (路径+通配符) do 执行操作

/l:不是递归的遍历文件,且需要通配符去匹配,只遍历当前文件夹的文件

通配符:

*:任意

.:多个

?:0或1个

不加通配符不能匹配

二,递归遍历文件

格式:for /r 变量 in (路径) do 执行操作

/r:不需要通配符,直接遍历文件下和其子文件下的所有文件tree

三,次数循环

格式:for /l 变量 in (起始数,步长,终止数) do 执行操作

四,无参数for

格式:for  变量 in (n条数据) do 执行操作

注:数据之间用逗号或者空格隔开

把写入括号的数据循环赋值给变量

 

到此cmd的命令基础就结束了,还有一些命令没写可以自己去查


路漫漫其修远兮,吾将上下而求索