1.内部/外部命令区别
内:系统自带的exe文件 可在 C:\Windows\System32中查看
例:常用ping 即 system32下的ping.exe 文件
外:第三方exe文件即DOS应用程序
例:xcopy 复制目录及其包含的所有文件的命令
2.常用命令
命令 /?查看帮助
命令 /?| more 分屏显示 内容不会直接跳到底
Ctrl+c 退出执行命令
exit 退出cmd
A.改变CMD样式
- title 改变cmd窗口标题
格式: title 标题 - mode 查看/设置窗口形状
格式: mode 列,行 - color 设置cmd 背景 字体颜色
格式:color 回到默认颜色白字黑底
color 背景 字体颜色
color 1c 背景蓝色 字体淡红色
- 其他cmd属性设置-右击标题栏
B.目录切换
- cd 打开指定文件目录
格式:cd 路径
cd … 上一层目录
cd . 当前目录
cd 查看当前所在路径
cd/ 当前盘符根目录 - 盘符: 切换到指定盘符
格式: F: - dir 查看当前目录内的文件
- dir /AH 查看当前目录内的隐藏文件
- md 创建目录
格式: md 目录名 - rd 删除目录
格式: rd 目录名 - del 删除文件
格式: del 文件路径
C.文件操作
- move 移动文件源文件会被删除
格式:move 源文件路径 目标文件路径
不在同一文件路径内 请使用绝对路径
move c:\test.txt d:\test.txt
源文件路径同目标文件路径相同 即对文件重命名
move a.txt b.txt 将a重命名为b - copy 复制文件源文件不被删除
格式:copy 源文件路径 目标文件路径 - replace 替换相同文件
格式 replace c:\a.txt d:
将d:\ 下 a.txt 替换为同c:\a.txt 一样的文件 - rename 重命名文件
格式:rename 路径 名字
缩写 ren - type 查看文件内容
格式:rename 路径 - start 打开文件
用于打开 应用程序 文本 网址- start www.baidu.com 打开网址
- start chrome 打开chrome浏览器
- start 1.txt 打开文本
- start . 使用文件管理器打开当前目录
- start 路径 使用文件管理器打开指定目录
打开不在当前路径的文件 请使用绝对路径
C.变量
- set 设置临时变量
set 变量名 = 值
set 变量名 查看变量
set 变量名 = 空 删除变量
set /a 表达式计算 set /a 1+2 得 3
set /p 变量名=用户输入提示 接收用户输入 - 环境变量
查看时间 set %DATE% %TIME%
判断上一条执行命令执行是否成功 echo %ERRORLEVEL% 成功为0 - 输出变量值
echo %变量名% - 设置永久变量 setx PATH “%path%:文件夹路径”
D.特殊字符
字符 | 功能 |
---|---|
| | 管道符 将符号左边结果作为右边的参数 |
& | 前面命令执行失败 &后的命令仍然执行 |
&& | 只有&&前的命令正确执行 后面才执行(类似于与运算) |
|| | 只有前面失败了后面才执行(类似于if else 的else) |
() | 提升优先级 |
- 通配符
* 代表0-n个任意字符
? 代表1个任意字符
E.if判断语句
- 判断文件存在
格式:if exist 文件路径 - 判断字符串是否相等
格式:if ”字符串1“ == ”字符串2“ - 判断变量是否被定义
- if /i 忽略大小写比较
格式:if defined 变量名 语句 - 判断数值相等
格式:if 数值 equ 数值 - 数值判断符
符号 | 功能 |
---|---|
equ | 相等 equal |
gtr | 大于 greater than |
gtq | 大于等于 greater than or equal |
lss | 小于 less than |
lsq | 小于等于 less than or equal |
neq | 不等于 no equal |
- 例子
if /i "hello" == "Hello" (echo 相等) else (echo 不相等)
> 相等
F.for 循环
cmd 中变量使用 %i
编写bat脚本 使用 %%i
- 遍历数字
for %%i in (1,2,3) do (echo %%i)
> 1 2 3
- 遍历指定目录内的文件
for %%i in (D:\*) do (echo %%i)
- 遍历指定目录内的文件夹
for /d in (D:\*) do (echo %%i)
- 遍历某个文件根目录下所有指定文件
for /r D:\ %%i in (*.txt) do (echo %%i)
遍历出D:\下所有子目录内txt文件
- 带起止步长的循环
for /L %%i in (1,2,5) do (echo %%i)
> 1 3 5
- 遍历文件内容
;姓名 年龄
小明 18,
小李 19,
for /f "eol=; skip=2 delims=, tokens=1-4,7-8" %i in (test.txt) do (echo %i %j)
> 小李 18
> 小明 19
eol 指定一个注释
skip=n 跳过n行
delims 行分隔符s
tokens 每行某个字符范围传递到变量内
命令解读:
循环打开test.txt 内的内容 按行提取 行与行的分割(delims)为,
;开头的行为注释(eol) 跳过两行(skip=2) %i变量为行内1-4字符 %j变量为行内7-8字符
G.注释
- ::
- rem
E.重定向
- >
ping 192.168.1.1 > ping.txt
将ping的结果存入ping.txt文件中 没有此文件自动创建 有复写原内容删除 - >> 同上一样 不过 不是复写 而是 追加 原内容不删除
- < 将右边结果作为左边参数
sort < text.txt 将右边文件内容排序
type null > text.txt 创建名为text 的 空txt文件
F.attrib 文件属性
- 显示文件属性
attrib 文件路径 - 设置文件属性+
例:
attrib +r text.txt 设置文件属性为可读
attrib +h +r text.txt 设置文件属性为隐藏可读 - 清除文件属性 -
attrib -h text.txt 清除文件隐藏属性
G.文件排序 sort
- 将排序结果 放在新文件里
(sort<text.txt) > text1.txt
- 倒序排序
sort /r
H.死循环%0
重复执行其前面代码
I.goto 跳转
: part 1
代码
go to part1
跳到:part1 执行其代码
J.call 调用子程序
格式: call 路径
demo1.txt
echo hello
demo2.txt
call demo1
echo world
> hello world
若不再同一级目录,请指定绝对路径