1、DOS命令及语法逻辑
常用命令简介
echo命令 :打开或关闭消息显示,常用于显示内容或同时重定向把内容输出到某个文本文件上。
参数:echo off / on
rem命令 :注释内容。(echo on打开时会打印内容)
参数:无
pause命令 :暂停命令,运行到pause命令时,显示Press any key to continue…(按任意键继续)
call命令 :从一个批处理程序调用另一个批处理程序,并不会终止父批处理程序且在父程序窗口中运行。
参数:接指定批处理程序路径。
start命令 :调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
(此命令调用的子批处理程序可以,使用父批处理的参数,等于参数传递)
参数:/MIN 开始窗口最小化执行
参数:/WAIT 开始程序执行完毕后,命令才会继续往下继续执行。(此参数较为常用,配合子功能模块编写执行处理完毕后主程序暂停和继续执行)
goto命令 :此命令为跳转命令,配合判断语句有更好效果。
例如:
goto A
echo “test”
:A
将会跳过echo命令直接跳转至标识位置行继续往下执行。
set命令 :显示、设置或删除变量。
显示变量:set 或 set s 前者显示批处理当前已定义的所有变量及其值,后者显示所有以s开头的变量及值。
设置和调用变量:例如set aa=abcd,就是把aa定义为abcd。如果要调用这个变量,就把aa两边加上个百分号。
参数:
set /p :用户自定义输入值.
例子:
set /p var=请输入你的名字:
echo 您的名字是:%var%
pause
set /a : set的/A参数就是让SET可以支持数学符号进行加减等一些数学运算!
例子:
set /a var=1 + 1
替换变量中的某些字符
@echo off
set a=bbs.verybat.cn
echo 替换前的值: “%a%”
set var=%a:bbs=sss%
echo 替换后的值: “%var%”
pause
对比一下,我们发现他把变量%a%的bbs给替换掉了,换成了sss.
符号介绍
重定向1
(1)>号:把内容输出到指定的文本文件上,如果文本文件有内容,会替换现有的内容。
(2)>>号:把内容输出到指定的文本文件上,如果文本文件有内容,会换行追加到现有的内容。
例:
echo test >d:\test.txt
echo test >>d:\test.txt
重定向2
<号:将输入信息来源重定向为指定的设备或文件。系统默认从显示器读取输入信息。
例:
不同文本文件中存储的数字进行交叉计算
set /p a=<./result/a.txt
set /p b=<./result/b.txt
set /p c=<./result/c.txt
set /p d=<./result/d.txt
set /a e=%c%-%a%
echo %e%
set /a f=%d%-%b%
echo %f%
set /a g=%e%+%f%
echo %g% >>./result/flow_qq.txt
exit
管道符号 |
用的最多的基本就是数据过滤
如:tasklist | findstr adb.exe
tasklist命令显示所有进程的内容后,把结果输出丢到管道执行过滤命令操作。
转义符 ^
顾名思义,把原来特殊的字符执行按照字符内容去显示。 特殊符号指:| & > <
逻辑运算符 & && ||
1、&的作用用来连接多个命令并按顺序执行,不管执行成功与否。
2、&&的作用用来连接多个命令并按顺序执行,只有命令执行成功,才会继续往下执行,否则不执行。
3、||的作用是连接多个命令并按照顺序执行,当前面的命令失败时,才会执行后面的命令,否则不执行。
语句结构
1、判断语句
if语句:
if [not] 字符串1 比较操作符 字符串2 (满足条件执行语句)[else(条件不满足时执行)] []括号为可选参数
比较操作符有几类:
== - 等于
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
选择开关/i则不区分字符串大小写;选择not项,则对判断结果进行逻辑非。
例子:
字符串比较:
if %str1%==%str2% (echo 字符串相同!) else (echo 字符串不相同!)
if /i %str1% LSS %str2% (echo str1^ <str2) else=“else” echo=“echo” str1=“str1”>=str2)
输入进行选择:
@echo off
chcp 936
:A
set /p test=“输入选择执行的浏览器,输入1执行QQ浏览器,输入2执行UC浏览器,输入3执行baidu浏览器,请输入:”
if “%test%” == “1” (
start Step2_getUID_qq.bat
goto B
)
if “%test%” == “2” (
start Step2_getUID_uc.bat
goto B
)
if “%test%” == “3” (
start Step2_getUID_baidu.bat
goto B
)
echo “无此选项,请从新输入!”
goto A
:B
pause
2、循环语句
for循环(种类很多,入门讲两种)
for循环使用什么参数,能够得实现什么样的功能,通常使用较多参数为/L /F。
(1)FOR /L %%i IN (1,1,5) do (循环体)
该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
序列 (5 4 3 2 1)。
(2)for /F “skip=2 tokens=2,3 delims=,” %%i in (提取文件的路径) do ()
说明:此循环用几个字概括,提取列。
skip=2 表示忽略前几行。
"delims=,"表示定义逗号“、”为分隔符,并用该分隔符“、”切分文本字符串。
tokens=有时表示提取全部。
tokens=m表示提取第m列。
tokens=m,n表示提取第m列和第n列。
tokens=m-n表示提取第m列至第n列。
Tokens=*表示删除每行前面的空格。忽略行首的所有空格。
tokens=m*提取第m列以后的所有字符,星号表示剩余的字符。
tokens=m,*提取第m列以后的所有字符,星号表示剩余的字符。
输出变量的个数由定义了的tokens决定
在 FOR 语句中显式声明 %%i。使用tokens= 隐式声明%%j 和%%k。只要不会引起试图声明高于字母“z”或“Z”的某个变量,则使用tokens= 可以指定最多 26 个输出变量。
例子:
无参读取文件夹mp4格式的文件名并输出
for %%i in (./video-wifi/*.mp4) do (
echo %%i
)
pause
/L循环输出1-100
for /L %%i in (1,1,100) do (
echo %%i
)
pause
/F杀死logcat进程
adb shell “su -c ‘ps logcat’”>.\logcatPid.txt
FOR /F "skip=1 tokens=3 delims= " %%i in (logcatPid.txt) do (
echo %%i
adb shell “su -c ‘kill %%i’”
)
pause
/F提取文档两列中的值并输出显示
rem 读取关键字
for /f “skip=1 tokens=1,2 delims=,” %%i in (keywords.csv) do (
rem 循环次数
echo 站点名称:%%i
echo 站点地址:%%j
)
注:循环中只声明了一个循环变量,但系统会自动帮我们创建了隐式的变量,所以可以直接输出两个变量的值。
字符串处理
1、截取字符串
set name=abcdefghijklmnopqrstuvwxyz0 12 3456789
echo 原字符串(第二行为各字符的序号):
echo %name%
echo 1234567890123 45678901234567890123456
echo 截取前5个字符:
echo %name:~0,5%
echo 截取最后5个字符:
echo %name:~-5%
echo 截取第一个到倒数第6个字符:
echo %name:~0,-5%
echo 从第4个字符开始,截取5个字符:
echo %name:~3,5%
echo 从倒数第14个字符开始,截取5个字符:
echo %name:~-14,5%
pause
__例子:
打印当前日期时间为数字:__
set date=%Date:0,4%%Date:5,2%%Date:8,2%%Time:0,2%%Time:3,2%%Time:6,2%
echo 完整输出的日期时间为:%date%
echo 输出的年份为:%date:~0,4%
echo 输出的月份为:%date:~4,4%
echo 输出的当前时间为:%date:~8,6%
pause
说明:变量date:~0,4说明截取字符从第1位开始,4代表往后截取4位。
%date%输出的是:星期* yyyy/mm/dd (如:星期四 2008/12/18)
引用格式:%date:~x,y%
x=起始坐标,y=截取字符个数(坐标从0到13)
如:
%date:~4,4% -->yyyy
%date:~9,2% -->mm
%date:~12,2% --dd
如取出格式为YYYYMMDD的日期:%date:4,4%%date:9,2%%date:~12,2% -->20081218
%time%输出的是:hh24:mi:ss.ms (如:10:49:12.17)
引用格式:%time:~x,y%
x=起始坐标,y=截取字符个数(坐标从0到12)
如:
%time:~0,2% -->hh
%time:~3,2% -->mi
%time:~6,2% -->ss
如取出格式为YYYYMMDD的日期:%time:0,2%%time:3,2%%time:~6,2% -->104912
输出格式化后的日期时间:%date:4,4%%date:9,2%%date:12,2%%time:0,2%%time:3,2%%time:6,2% -->20081218104912
__字符串操作扩展
替换字符串
合并字符串
扩充字符串__
批处理脚本进阶扩展内容
DOS命令+adb shell命令+linux命令实现自动化