第一节先介绍windows批处理。
这个起源于跟旁边同事学习在windows用命令行办公,渐渐地有些批处理功能就需要了,于是专门抽出了几天学习了一下。我认为文档最重要的功能是为了备忘,择取了很多文档的例子,现在很久了就没法详细的标明出处了,很是抱歉。为了我个人的使用,例子中很多不太必要的东西都被我简化了,有些很重要的东西就被我描述的过于详细。大家择优而看吧。
简单一点,把批处理当初语言来看,常用的C语言有输入输出,定义变量,顺序,循环,条件判断。这是任何一个语言的根本,我就按这些类分类描述了。
总括:
要想运行批处理命令,首先创建一个txt文件,将其后缀名改为.bat,例如命名为my.bat, 打开cmd,切换到my.bat的目录,输入my.bat即可运行my.bat中写入的命令。最简单的测试例子,加入echo hello world即可看到hello world在cmd窗口中打印出来。
分类描述:
帮助://h2>
command /看对应command的帮助,这个无论何时都是最权威的。
注释:::命令,echo off命令
程序中的注释是相当有用的,行注释在行首加上::,例子如下
::这是一个注释。
@echo off的意思是此命令后的命令在执行的时候,不显示命令本身。
变量:set命令
set var=”c:a.txt”
echo %var%
输出:echo命令,直接打印到控制台
echo Hello World
输入:choice命令,根据用户输入切换到不同的流程。
仔细分析这个例子,使用了choice命令来读取用户的不同输入,下面通过goto来根据不同的用户输入切换到不同的处理流程。
goto就是跳转到不同的标 中。标 的定义以:(冒 )开始,后面是标 名,例如下面的:no, :yes, :cancel, :end都是一个个的标 。为什么每一个标 要加上一个goto end呢是因为在跳转到标 后,程序就开始顺序执行,如果不进行跳转走,那么会继续运行到下一个标 。标 仅仅是个标记,不像函数一样,有自己的作用域范围,由大括 包括起来。标 没有范围,仅仅是标记,切记切记。非常有用的例子,希望掌握。
CHOICE /C YNC /M “确认请按 Y,否请按 N,或者取消请按 C”
if errorlevel 3 goto cancel
if errorlevel 2 goto no
if errorlevel 1 goto yes
:no
echo no way
goto end
:yes
echo yes,please
goto end
:cancel
echo alread canceled.
:end
传递参数:%1, %2…,%9对应用户通过命令传递的参数。
条件判断:if命令
===============================================
@echo off
set str1=abcd1233
set str2=ABCD1234
if %str1%==%str2% (
echo 字符串相同!
) else (
echo 字符串不相同!
)
===============================================
请一定要注意上面的if,else的语法结构,else不允许直接是行首。超级恶心,导致我经常出现语法错误。后面我基本上就以上面这个为模板了,即使就一个句子需要执行,我也将()括着,语法就按照上面的描述写。易记不易错。
if判断有几种情况
1. 是errorlevel的判断, 上面已经示例了。
2. 是比较判断,常用的如下:
== – 等于
EQU – 等于
NEQ – 不等于
LSS – 小于
LEQ – 小于或等于
GTR – 大于
GEQ – 大于或等于
选择开关/i则不区分字符串大小写;选择not项,则对判断结果进行逻辑非。
3. 是存在判断,就是 if exists file1 echo “file1 exists” 这样的语法结构判断文件或者目录的存在。
4. 是定义判断,判断变量是否存在,即是否已被定义。其命令格式为:
IF [not] DEFINED variable command1 [else command2]
循环:
)
pause
===============================================
解释一下这个例子,skip=5表示要跳过前5个字符,delims= 表明使用空格分隔,tokens=3*表明要取得空格分隔的第3组,以及最后一组(*表明第4组到最后).后面的%%a对应的第三组,%%b对应的*那一组。
实际还有开关/R, /D,我没有用过也没有深入了解。
截取路径参数:
截取传入的带路径的参数
Test.bat: 假设传入的参数为:c:temptest1.txt
则对应截取如下:下面的1表明是对应着%1,当然可以为2,3等等,与传入的参数对应即可。
echo %~d1 =>c:
echo %~dp1 =>c:temp
echo %~nx1 =>test1.txt
echo %~n1 =>test1
echo %~x1 =>.txt
cho 当前目录路径:%~dp0
语音声音:
mshta vbscript:createobject(“sapi.spvoice”).speak(“好好学习Merry Christmas and Happy New Year!”)(window.close)
字符串处理:
截取字符串:
set var=10203040
第一数字是位置,从哪里开始截取,第二个数字是截取的长度。
第一个数字如果是负数,则表示反方向的位置,例如-4表明从倒数第四个字符开始。
第二个数字如果无,表明是可以达到的最长的长度,位置从0开始。
echo %var:~-4,3% ;从倒数第四个字符的位置开始截取,截取3个字符
echo %var:~0% ;从正数第0个位置开始,即全长。
echo %var:~1% ;从正数第一个开始,截取除第一个字符之外的全部字符
echo %var:~-2% ;从倒数第2个字符的位置开始截取,截取2个字符(从左向右截最长只有2个)。
替换字符串
echo %var:0=kkk% ;0替换为kkk
echo %var:10=kkk% ;10替换为kkk
echo %var:20=kkk%
echo %var:*20=kkk% ;20之前包括20字符串都替换为kkk
简单牢骚一下:
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114448 人正在系统学习中 相关资源:软件测试管理中软件项目需求分析总结_需求分析小结-其它代码类…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!