介绍批处理命令也有原因的,是由于在使用jenkins处理集成的时候,有些dll需要编译后拷贝到Web层的,否则反射是无法执行的。好了,切入正题
批处理文件是无格式的文本文件。包括一条或多条。扩展名为.bat或cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。
下面简单介绍基本的语法使用
1echo命令
打开或关闭请求回显功能,显示当前设置
echo [{on|off}][message] Sample:@echo off / echo hello world
2.@ 命令
表示不显示@后面的命令
不能让对方看到你使用的命令啦。
Sample:@echo off @echo Nowinitializing the program,please wait a minite...
3goto命令
指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
Sample: if {%1}=={} gotonoparms if{%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。) @Rem check parametersif null show usage :noparms echo Usage:monitor.bat ServerIP PortNumber goto end
4.Rem 命令
注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。
Rem Message
Sample:@Rem Here is the descr1ption.
5.Pause 命令
运行 Pause 命令时,将显示下面的消息:
Press any key tocontinue . . .
该命令有助于显示想要的结果
Sample: @echo off :begin copya:*.* d:back echo Please put a newdisk into driver A pause goto begin
在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:back中。
6.If命令
if表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:
6.1、if "参数"== "字符串" 待执行的命令
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
如if"%1"=="a" format a:
if {%1}=={} gotonoparms
if {%2}=={} gotonoparms
6.2、if exist文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如if existconfig.sys edit config.sys
7for命令
命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令
在批处理文件中使用 FOR 命令时,指定变量请使用%%variable
整体的语法是:
for{vaiable|%%variable}in (set) do command[CommandLineOptions]
- %variable指定一个单一字母可替换的参数。
- (set) 指定一个或一组文件。可以使用通配符。
- command指定对每个文件执行的命令。
- command-parameters为特定命令指定参数或命令行开关。
对应的格式也可以是
for参数 %%变量名 in ("文件或通配符")do("操作")
以上是两种变形的写法,但表达的都是相同的意思
参数 for有4个参数分别是/d /r /l /f
- /d 仅为目录
- /r 递归
- /L迭代数值范围(小写l)
- /f 迭代文件解析
我们来个递归的写法
在一个目录中搜索某个文件拷贝到另一个目录中
set jbosspath=E:\Jenkins_Publish\ExamSystem_NET\ExamSystem_Service\bin set projwhich=ExamSystem set objectbll=%Jenkins_Net%\%projwhich%\ITOO.Exam.BLL\obj\Release for /r"%objectbll%" %%i in (ITOO*.dll) do ( echo 正在复制%%i到%jbosspath%copy /y"%%i" %jbosspath%<p>)</p>
小结:
以上是对bat脚本的基本学习和认识,基本的语法结构和命令提示符,也是对现学习的最基本的记录,稍作整理吧。