bat教程

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命令实现自动化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值