演戏:戏外的看戏内的表演-->戏内的看导演的剧本-->剧本看投资方-->投资方看流量-->流量看背景
一 batch批处理
批处理文件:是将'一系列命令'按一定的顺序'集合'为一个'可执行的文本文件',其扩展名为'BAT'或者CMD
批处理:就是运用一些含有'特殊意义的符号'和一些'完成指定功能的命令'组合而成
思考: 有'多少'这样的特殊符号和功能命令?
备注:ctrl + '<--|-->' -->'命令行以word为单位进行左右快速跳转'
Esc:清除'当前命令行'-->类似Linux的'ctrl+u'
Cls:清屏 -->类似Linux的'ctrl+L'
win键+R -->打开'运行'窗口,在运行窗口中'输入CMD'-->用来打开'命令提示符黑窗口'
二 注释
1)REM为'注释命令',一般用来给程序'加上注解',该命令后的内容'不被执行',但'能回显'
2)'::'后的字符行在执行时'不会回显'
三 echo
备注: echo 后面的字符串'不需要加'双引号-->否则也会'写入文件'中 -->区别Linux
(1)命令行
了解:什么是'命令回显'?
备注:echo是'打印消息'-->'类同'linux的'echo'
关闭回显:是指'运行批处理文件'时,'不显示'文件里的'每条命令',只显示'运行结果'
+++++++++++'@'作用+++++++++++
@echo off #从'本行开始'关闭回显
备注:一般批处理'第一行'都是这个
+++++++'关闭'DOS命令提示符+++++++
在DOS提示符状态下'键入ECHO OFF',能够'关闭DOS提示符'的显示使屏幕'只留下光标',直至'键入ECHO ON',提示符才会'重新'出现
(2)bat脚本中
说明:体会'@echo off'的作用 -->'最佳实践'
① 测试1
② 测试2
③ 测试3
④ echo.
⑤ 自动答复命令中的提问
⑥ windows中的提示音
'echo ^G(ctrl+g dos命令行打出的)':使'喇叭鸣响'
思考:在批处理命令里面'怎么写'?
备注:一些'简单的特殊符号'可以在dos命令窗口'直接输入',并用'重定向保存'为文本文件
echo ^G > temp.txt -->type temp.bat'可以响',但是./temp.bat则'不响'
⑦ 生成
echo java > hello.txt -->'类比linux的echo'-->'没有则新建,有则覆盖'
echo java >> hello.txt -->'类比linux的echo'-->'追加'
++++++++++++'下面是空格的问题--">"要紧密连接'++++++++++++
(3)pause
说明:在这里就是'停止pause下面系统命令的执行' -->'任意键继续执行'
(4) errorlevel
备注: 对比linux的'echo $?'去理解
(5)句柄
核心:了解'Windows'这种--'>nul'的这种'语法'
类比:linux
(6)Windows的转义字符
① 转义
^是对特殊符号'<、>、&'的前导字符,在命令中他将'以上3个符号'的'特殊'功能去掉,仅仅只把他们'当成符号'而'不使用'他们的特殊意义
类比:linux的'\'
② 续行
说明:效果等价linux的'\'反斜杠换行 -->'1行太长写不下'
(7)组合命令
(8)优先级别
'|' 大于 '>、>>' 大于 '||、&&'
需求:把C盘和D盘的文件和文件夹'列出到'a.txt文件中
'错误':dir c:\ && dir d:\ > a.txt
'正确':dir c:\ > a.txt && dir d:\ >> a.txt
(9)双引号
(10)百分号
涉及:%、%%vaeiable-->"for循环中(接受变量)"、%variable%-->"echo中引用变量"
备注:!variable! -->是对'%variable%'的增强
(11)批处理运行命令的机制
应用场景:'交换'两个变量的值,但是'不使用临时'变量
set var1=abc
set var2=123
set var1=%var2%& set var2=%var1%
原因:先做'预处理'-->'变量值'替换
① 常规错误做法
原因'解读'
② 正确变量延迟
启动了变量延迟效果:告知'批处理'动态'感知'变化-->即'先不给'该行变量赋值,而是在'运行过程中'给变量'赋值' -->'顺序'
③ 注意事项
④ 继续
说明: !variable!的应用'场景'
1)错误
解读:%variable%'不能感知'变量的'变化'
2)正确
(12)set自定义变量
① 常规定义
② 代码里指定变量
③ 用户外界手工输入变量
=号'右边'的是'提示语','不是变量的值',变量的值由我们运行后自己用'键盘输入'
备注: 类似Linux的'read -p'
④ set不加参数
⑤ 特殊
备注:以下用法将'清除变量variable的值',使其变成'未定义'状态
SET variable=
⑥ set /A
1) set的/A参数就是让SET可以'支持数学符号'进行'加减'等一些数学运算
注意:一般的运算常'为十进制'运算;如果数字字符串'最左边'为0,将被认为是'八进制'
案例讲解
⑦ 获取脚本的绝对路径
备注:windows下的"%"类似于Linux的"$" -->%0
(13)set命令进行字符串处理
① 字符串替换
echo %variable:str1=str2% -->"格式"
效果:将字符串变量%variable%中的str1'全部替换为'str2
++++++++++++++++'分割线'++++++++++++++++
需求:将"a.txt"文件中的"! FUNCTION"替换为"FUNCTION"
原理:是先查找所有的'ty1'变量的值,然后'做替换'-->比一个一个的'if'判断'性能'高
备注:字符串的'替换'和'截取'功能在'引用变'量的地方均可以,并'不一定'必须要有'set'命令
set a=www.wzj.com
echo 替换前的值: "%a%"
echo 替换后的值: "%a:.=伤脑筋%" -->"."替换为"伤脑筋"
② 字符串截取
③
于copy命令默认是将目标文件和源文件均视为文本文件,因此新生成的文件带上了文本结束符"1A"
解决的办法很简单,就是在拷贝时'指明'是拷贝'二进制'文件
新的批处理内容如下:"copy /b a.dat+b.dat c.dat"
①②③④⑤⑥⑦⑧⑨⑩