基本知识
-
cmd 与 powershel 命令和关键字不区分大小写,变量名区分大小写
-
DOS 是磁盘操作系统;命令提示符是 DOS 系统的界面中输入 DOS 命令的提示位置;cmd 是系统运行其自带 DOS 的命令
-
PID 是 processid(进程号);IM 是 imaginename(映像名称)
-
在 .bat 文件开头加上
@echo off
代表不输出描述,比如C:\Users\14805\desktop>...
这样的描述不会输出,直接输出结果 -
echo输出结果,pause使命令框停顿,pause>nul表示不输出结束提示,cls清屏命令,dir查看目录
-
设置变量
set a=10
,输出变量echo %a%
,设置变量表达式set /a b=%a%+1
-
cmd的注释
::
或rem
-
输入参数使用
set /p 变量名=
@echo off set /p a= echo %a% pause
批处理运算
算数运算
命令模式
a表示运算操作
set /a 1+2
文件模式
@echo off set /a 变量名=运算表达式 echo %变量名% pause
重定向运算
-
>
表示从左向右输出,会覆盖原文件的内容 -
>>
表示从左向右输出,不会覆盖原文件的内容 -
type
文本内容查看 -
<
和<<
表示从右向左输出,区别是会不会覆盖
@echo off set /a b=1+3 echo b > test.txt echo zzp >> test.txt pause
多命令运算
-
&&
左边命令执行失败就不会执行第二个命令了 -
||
左边命令执行成功就不会执行第二个命令了
#都不会执行右边的命令 ipconfigaa && net user ipconfig || net user
管道符号
-
|
左边的输出作为右边的输入
dir | find ".txt"
批处理基本命令
命令格式
命令+子命令+参数+操作+选项
命令帮助查看 /?
或 /help
#查看所有用户 net user #查看帮助 net user /? #查看帮助完整版 net user /help
参数传递
-
.bat文件接受参数时使用%num
-
调用.bat文件时按顺序在后面填写参数
@echo off set /a b=%1+%2 echo %b% pause
修饰命令
颜色命令
color 颜色参数
可以使用 color /?
查看颜色参数和帮助信息,color一般会添加两个参数,第一个是背景颜色,第二个是字体颜色
#背景为黑色,字体为淡绿色 color 0a
标题命令
改变命令框的标题
title [String]
title hack
时间命令
-
date
查看当前日期 -
time
查看当前时间
date /t time /t
启动命令
start +参数
-
"title" 在窗口标题栏中显示的标题
-
path 启动目录
-
B 启动应用程序,但不创建新窗口
start D:\桌面\前端\1-2.html
调用脚本文件
call [path] 文件名 传递的参数
写一个1.bat作为输出
@echo off echo %1
写一个2.bat调用1.bat
@echo off set /a b=%1+%2 call 1.bat %b% pause
任务列表查看命令
可以显示本地或远程的当前运行的进程列表
TASKLIST [/S IP [/U username [/P [password]]]]
参数列表
-
/V 显示详细任务信息
-
/FI filter 显示一系列符合筛选器指定条件的任务
-
/FO format 指定输出格式。有效值: "TABLE"、"LIST"、"CSV"
-
/? 显示此帮助信息
筛选器
其中filter对应的语法如下(更多的筛选规则使用帮助命令查看)
注:gt(大于)、ge(大于等于)、lt(小于等于)和、le(小于等于)eq(等于)ne(不等于)
筛选器名称 | 有效运算符 | 有效值 |
---|---|---|
STATUS | eq, ne | RUNNING ,UNKNOWN |
IMAGENAME | eq, ne | 映像名称 |
PID | eq, ne, gt, lt, ge, le | PID 值 |
样例
tasklist /fi "imagename eq Typora.exe" tasklist /fi "imagename eq Typora.exe" /fo "list"
任务关闭命令
使用该工具按照进程 ID (PID) 或映像名称终止任务
TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]
-
/FI filter 应用筛选器以选择一组任务。允许使用 ""。例如,映像名称 eq acme
-
/PID processid 指定要终止的进程的 PID。
-
/IM imagename 指定要终止的进程的映像名称
-
/T 终止指定的进程和由它启用的子进程。
-
/F 指定强制终止进程。
TASKKILL /IM notepad.exe TASKKILL /PID 1230 /PID 1241 /PID 1253 /T TASKKILL /F /IM cmd.exe /T TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*" TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe TASKKILL /S system /U 域\用户名 /FI "用户名 ne NT*" /IM * TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
文件夹结构查看命令
以图形的形式来显示驱动器或路径的文件夹结构
TREE [drive:][path] [/F] [/A]
-
/F 显示每个文件夹中文件的名称
-
/A 使用 ASCII 字符,而不使用扩展字符
tree /f
关机命令
shutdown +参数
参数列表
-
没有参数时显示帮助信息
-
/i 显示图形用户界面(GUI),可以操作局域网内的计算机的启动
-
/r 完全关闭并重启计算机
-
/a 中止系统关闭
-
/p 关闭本地计算机,没有超时或警告
计划任务命令
允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任务
SCHTASKS /parameter [arguments]
-
/Create 创建新计划任务
-
/Delete 删除计划任务
-
/Query 显示所有计划任务
-
/Change 更改计划任务属性
-
/Run 按需运行计划任务
-
/End 中止当前正在运行的计划任务
-
/ShowSid 显示与计划的任务名称相应的安全标识符
SCHTASKS SCHTASKS /? SCHTASKS /Run /? SCHTASKS /End /? SCHTASKS /Create /? SCHTASKS /Delete /?
SCHTASKS /Create
允许管理员在本地或远程系统上创建计划任务,具体参数可以使用命令 SCHTASKS /Create /?
查看
SCHTASKS /Create [/S system [/U username [/P [password]]]] [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day] [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime] [/RI interval] [ {/ET endtime | /DU duration} [/K] [/XML xmlfile] [/V1]] [/SD startdate] [/ED enddate] [/IT | /NP] [/Z] [/F] [/HRESULT] [/?]
#在远程机器 "ABC" 上创建计划任务 "doc",该机器每小时在 "runasuser" 用户下运行 notepad.exe。 SCHTASKS /Create /S ABC /U user /P password /RU runasuser/RP runaspassword /SC HOURLY /TN doc /TR notepad
环境变量命令
显示、设置或删除 cmd.exe 环境变量
SET [variable=[string]]
-
variable 指定环境变量名
-
string 指定要指派给变量的一系列字符串
要显示当前环境变量,键入不带参数的 SET,前缀匹配 SET P
会显示所有以字母 P 打头的变量
目录命令
目录浏览
目录和文件查看命令 dir
DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N] [/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
-
/A 显示具有指定属性的文件,属性列表
-
D 目录 R 只读文件
-
H 隐藏文件 A 准备存档的文件
-
S 系统文件 I 无内容索引文件
-
L 重新分析点 O 脱机文件
-
-
/B 使用空格式(没有标题信息或摘要)
-
/L 用小写
-
/O 用分类顺序列出文件,排序规则
-
N 按名称(字母顺序) S 按大小(从小到大)
-
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
-
dir /od dir /ah /b
目录的创建与删除
创建目录 mkdir
MKDIR [drive:]path
mkdir a\b\c #多级目录的创建
删除目录 rmdir
RMDIR [/S] [/Q] [drive:]path
-
/S 除目录本身外,还将删除指定目录下的所有子目录和文件。用于删除目录树
-
/Q 安静模式,带 /S 删除目录树时不要求确认
目录切换
显示当前目录名或改变当前目录 cd
CD [/D] [drive:][path]
-
不带参数只键入 CD,则显示当前驱动器和目录
-
使用 /D 开关,除了改变驱动器的当前目录之外,还可改变当前驱动器
重命名命令
REN [drive:][path]filename1 filename2.
注意:不能为目标文件指定新的驱动器或路径
ren test.txt test1.txt
拷贝命令
将一份或多份文件复制到另一个位置
COPY source destination
-
source 指定要复制的文件
-
destination 为新文件指定目录和/或文件名
文件的创建与删除
文件的创建
-
创建空的文件:type nul>文件名
-
创建有内容文件:echo 内容>文件名
文件的删除
DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
-
names 指定一个或多个文件或者目录列表,可以使用通配符
*
-
/P 删除每一个文件之前提示确认
-
/F 强制删除只读文件
-
/Q 安静模式。删除全局通配符时,不要求确认
-
/A 根据属性选择要删除的文件,属性列表
-
R 只读文件 S 系统文件
-
H 隐藏文件 A 准备存档的文件
-
I 无内容索引文件 L 重新分析点
-
移动命令
移动文件并重命名文件和目录,可以使用通配符 *
#移动至少一个文件 MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination #重命名一个目录 MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2
-
destination 指定文件的新位置。目标可包含一个驱动器号和冒号、一个目录名或组合。如果只移动一个文件并在移动时将其重命名,你还可以包括文件名
-
dirname2 指定目录的新名称
-
/Y 取消确认覆盖一个现有目标文件的提示
-
/-Y 对确认覆盖一个现有目标文件发出提示
#把在同级目录的test1的全部内容移动至test move test1\* test #重命名文件夹test move test test1
网路相关命令
用户操作命令
NET USER 将创建并修改计算机上的用户帐户。在不使用命令开关的情况下,将列出计算机的用户帐户。用户帐户信息存储在用户帐户数据库中,可以使用 net user /help
查看详细信息
[username [password | *] [options]] [/DOMAIN] username {password | *} /ADD [options] [/DOMAIN] username [/DELETE] [/DOMAIN]
-
*
生成密码提示。在密码提示下键入密码时,将不会显示密码 -
/DOMAIN 在当前域的域控制器上执行此操作
-
/ADD 向用户帐户数据库添加用户帐户
-
/DELETE 从用户帐户数据库删除用户帐户
net user admin 123456 /add net user admin /delete
使用 net user username
可以查看用户信息(包含用户组信息)
net user Administrator
用户组操作命令
NET LOCALGROUP 修改计算机上的本地组。使用时如果没有选项,它将显示计算机上的本地组
NET LOCALGROUP [groupname [/COMMENT:"text"]] [/DOMAIN] groupname {/ADD [/COMMENT:"text"] | /DELETE} [/DOMAIN] groupname username [...] {/ADD | /DELETE} [/DOMAIN]
-
groupname 为要添加、扩展和删除的本地组的名称
-
/COMMENT:"text" 为新组或现有组添加注释。将文本用引号括起来
-
/DOMAIN 在当前域的域控制器上执行操作。否则,在本地工作站上执行该操作
-
name [ ...] 列出添加到本地组或从中删除的一个或多个用户名或组名。用空格将多个条目隔开。名称可以是用户或全局组,但不能是其他本地组
-
/ADD 将组名或用户名添加到本地组
-
/DELETE 将组名或用户名从本地组删除
net localgroup Administrators admin /add net localgroup Administrators admin /delete
网络连通性检测命令
检查网络通信状态的命令,用于查看TCP/IP 网络上的PC 和网络设备是否正确连接 ping
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p] [-4] [-6] target_name
target_name可以是IP或域名
ping 127.0.0.1
可以检测本地网卡是否正常工作
-
-t Ping 指定的主机,直到停止,按
ctrl+c
停止 -
-n count 要发送的数据包的数量
-
-l size 发送缓冲区大小(数据包的大小)
-
-i TTL 生存时间
-
-r count 记录计数跃点的路由(仅适用于 IPv4)
-
-w timeout 等待每次回复的超时时间(毫秒)
远程连接
安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令
SSH Client 的基本使用方法
ssh user@remote -p port
-
user 是你在远程机器上的用户名,如果不指定的话默认为当前用户
-
remote 是远程机器的地址,可以是 IP,域名
-
port 是 SSH Server 监听的端口,如果不指定的话就为默认值 22
路由信息查看
tracert target_name
-
-w timeout 等待每个回复的超时时间(以毫秒为单位)
-
-h maximum_hops 搜索目标的最大跃点数
网络适配器命令
ipconfig是电脑上用来控制网络连线的一个命令行工具。它的主要功用,包括用来显示现时网络连线的设置(/all参数),或透过/release参数来释放获取的ip位置,和透过 /renew 来重新获取ip位置的分配
ipconfig [/allcompartments] [/? | /all | /renew [adapter] | /release [adapter] | /renew6 [adapter] | /release6 [adapter] | /flushdns | /displaydns | /registerdns | /showclassid adapter | /setclassid adapter [classid] | /showclassid6 adapter | /setclassid6 adapter [classid] ]
-
/all 显示完整配置信息
-
/release 释放指定适配器的 IPv4 地址
-
/release6 释放指定适配器的 IPv6 地址
-
/renew 更新指定适配器的 IPv4 地址
-
/renew6 更新指定适配器的 IPv6 地址
-
/flushdns 清除 DNS 解析程序缓存
-
/displaydns 显示 DNS 解析程序缓存的内容
APR命令
地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,简而言之就是靠IP找MAC
命令 arp
可以显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表
ARP -s inet_addr eth_addr [if_addr] ARP -d inet_addr [if_addr] ARP -a [inet_addr] [-N if_addr] [-v]
-
-a 通过询问当前协议数据,显示当前 ARP 项。如果指定 inet_addr,则只显示指定计算机的 IP 地址和物理地址。如果不止一个网络接口使用 ARP,则显示每个 ARP 表的项
-
-g 与 -a 相同
-
-v 在详细模式下显示当前 ARP 项
-
inet_addr 指定 Internet 地址
-
-N if_addr 显示 if_addr 指定的网络接口的 ARP 项
-
-d 删除 inet_addr 指定的主机,可以使用通配符
-
-s 添加主机并且将 Internet 地址 inet_addr与物理地址 eth_addr 相关联,是永久的
-
eth_addr 指定物理地址
arp -s 157.55.85.212 00-aa-00-62-c6-09 #添加静态项 arp -a #显示 ARP 表
条件判断语句
一般形式
if 条件表达式 (语句1) else if (语句) ... else (语句2)
第一种写法:最简单,就是写一行
@echo off set v=zz if %v%==zzp (echo ok) else (echo no) pause>nul
第二种写法:可读性好的语法是分行写
注意:结构一定要严格遵守,分行后else要与右括号 )
对其并有一个空格
@echo off set v=zz if %v%==zzp ( echo ok ) else ( echo no ) pause>nul
第三种写法:可读性好的语法是分行写的加强版
if 语句与左括号 ( 同行,右括号 ) 不与 else if 同行,右括号 ) 后面加上续行操作符 ^
@echo off set v=zz if %v%==zzp ( echo ok )^ else ( echo no ) pause>nul
操作数可以是字符串也可以是数值,同时还可以是变量;在命令扩展下支持的比较运算符有:"equ(等于)"、"neq(不等于)"、"lss(小于)"、"leq(小于等于)"、"gtr(大于)"、"geq(大于等于)"六种,其中"lss"、"leq"、"gtr"和"geq"四种比较操作符主要用于对数值进行比较,当参与比较的字符串是字符串时,将被转换为对于的ASCII码进行比较;而"equ"和"neq"既可以比较数值也可以比较字符串
用途
-
判断驱动器、文件或文件夹是否存在,用 if exist 语句;
-
判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句;
-
判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;
-
判断某个变量是否已经被赋值,用 if defined str 语句;
循环结构
基本语法
for [参数] %%变量名 in (匹配符) do (执行的命令)
注:必须严格遵守语法,空格不能少
参数
/d, /r, /l, /f,加上无参数,所以一共五种
-
无参
:遍历当前路径的文件夹下的文件,但也可在(匹配符)中指定路径 -
/d
:遍历当前路径的文件夹下的文件夹,但也可在(匹配符)中指定路径 -
/r [路径]
:深度遍历指定路径下的所有文件,子目录中的文件也会被遍历到,如果没指定路径,默认当前路径 -
/l
:当使用参数 /l 时,需结合(匹配符)一起使用,此时 () 括号内部的用法规则为:(start, step, end),此时的 for 命令作用等同于 java 语言中的 for 语句 -
/f
:用于解析文件中的内容,匹配符写入文件目录
示例
for %%i in (*) do ( echo %%i ) for %%i in (c:\softwares\VisualBat\*.txt) do ( echo %%i ) for /d %%i in (*) do ( echo %%i ) for /r c:\softwares\ %%i in (*.url) do ( echo %%i ) #参数可结合使用,/d 表示遍历文件夹,/r 表示深度遍历,因此以上命令作用为深度遍历当前目录下的所有文件夹 for /d /r %%i in (*) do ( echo %%i )
GOTU语句
goto是个跳转命令,紧跟其之后的是标签名;冒号是一个标签标志,紧跟其之后的是标签名,两者合称标签
gotu:标签 :标签
注意事项:
-
一一对应。goto语句与标签要相互对应。不允许只有goto语句而没有相应的标签段,否则,程序将找不到相应的标签段而直接退出;只有标签段而没有goto语句是允许的,但不能实现流程跳转功能,从代码精简的角度来看,有标签段而没有goto语句,则此标签是多余的,可以减去
-
多个标签。若有多个标签段,则需要注意标签段之间是否需要添加恰当的退出语句来终止程序继续向下执行,这是很多新手很容易犯错的地方,需要谨慎
-
标签名只可以使用常量,而不能使用变量