".bat" refers to "batch file", which is an executable file consisting of a series commands, can include calls other programs. enter the name batch at command prompt, or double-click file, and system will call cmd.exe run commands in one by order they appear. use files streamline routine repetitive tasks. < p>< blockquote>
< p>
the operating environment this tutorial: windows 10 system, dell g3 computer.
bat introduction< span>< strong><
bat under dos. a .bat that consists each line dos (most time it just like we execute prompt). you use any text editing tool such as edit notepad windows. create modify files.
batch, also known script. as suggests, processing process object batches. it usually considered simplified scripting language used systems.
a unformatted contains more commands. its extension .cmd. appear [1]. (also programs scripts) intruders often write achieve functions combined intrusion with multiple tools, automatic intrusion, result extraction.
steps create bat format file<
1. right-click on desktop select new-text document;< title="166184872889155What file is .bat"
2. code, click file-save as;
<3. select save path, change type "all (* .*)", then enter name: name.bat save;
<4. after creation completed, run
<common files<
echo command<
echo the turn echo off request function, be display messages. without parameters, displays current settings "echo [on off] [message]". among them, " represents selection "[]" class. meaning three output modes: on; off; [message]<
@
@ hide after @ . when executed, currently running displayed window. in better concealment, intruder hide.
sample:@echo off<
@echo now initializing program,please wait minite…<
@format x: q u autoset (format this y parameter cannot used, but microsoft has left for us. effect same y.)
goto
goto used jump location specified label start execution from next label. "goto label", where arbitrary, best have meaningful letters. need add ":" sign before letter indicate
syntax:
goto label< code> (label parameter, specifying program redirected.)
sample: p>
if {%1}{} goto noparms if {%2}{} noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。) @rem check parameters null show usage :noparms usage: monitor.bat serverip portnumber end< pre>chosen casually, add a: uses this: find step to. it's some explanation so others seem understand your intentions.
rem
comment equivalent -------- c language. not only starts function comments [1] facilitate read yourself future.
format: rem message<
sample:@rem here description.<
pause
pause command, when runs pause prompt "please press key continue..."
when following message displayed: >press continue. sample: @echo :begin copy a:. d:\back please put new disk into driver begin< pre>
在这个例子中,驱动器 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。<
call 命令<
用于在一个批处理程序中调用另一个批处理程序,此调用过程中只是暂时挂起父批处理程序,当子批处理程序运行完毕后会返回父批处理程序继续执行 。<
常用的命令格式为“call [path] filename”,其中path是要调用的批处理文件的位置,可选,默认是与父批处理程序在同一目录下;filename用于指定子批处理程序的文件名,其必须包含有.cmd或.bat扩展名
事实上call命令的格式不止这一种,但不常用,详细情况可以在命令行窗口输入call ?查看
语法< >call [[drive:][path] filename [batchparameters]] [:label [arguments]]< pre>
参数<
[drive:][path] filename< li>< ul>
指定要调用的批处理程序的位置和名称。filename 参数必须具有 或 .cmd 扩展名。<
start
调用外部程序,所有的dos命令和命令行程序都可以由start命令来调用
常用参数:<
min 开始时窗口最小化<
separate 在分开的空间内开始 16 位 程序<
high 在 high 优先级类别开始应用程序<
realtime realtime
wait 启动应用程序并等候它结束<
parameters 这些为传送到命令 程序的参数<
执行的应用程序是 32-位 gui 应用程序时,cmd.exe 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。<
choice
choice 使用此命令可以让用户输入一个字符,从而运行不同的命令 。使用时应该加 c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……<
如: choice c:dme defrag,mem,end<
将显示<
defrag,mem,end[d,m,e]?<
sample:<
sample.bat的内容如下:< >@echo defrag,mem,end errorlevel 3 defrag (应先判断数值最高的错误码) 2 mem errotlevel 1 end :defrag c:\dos\defrag :mem :end good bye< pre>
此文件运行后,将显示 defrag,mem,end[d,m,e]? 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。<
if
if 表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:<
1.if “参数”="=" “字符串” 待执行的命令<
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句 。(注意是两个等号)<
如if "%1"“a” a:< noparms< {%2}="={}"
2.if exist 文件名 待执行的命令<
如果有指定的文件,则条件成立,运行命令,否则运行下一句 existconfig.sysedit config.sys<
3.if 数字 待执行的命令<
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句 x2<
dos程序运行时都会返回一个数字给dos,称为错误码errorlevel或称返回码,常见的返回码为0、1
for
for命令主要用于循环调用,该命令功能十分强大,有多种调用方法
for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。<
在批处理文件中使用 for 命令时,指定变量请使用 %%variable< {%variable|%%variable} (set) do [ commandlineoptions]<
%variable 指定一个单一字母可替换的参数。<
(set) 指定一个或一组文件。可以使用通配符。<
command 指定对每个文件执行的命令。<
command-parameters 为特定命令指定参数或命令行开关。<
而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %i<
如果命令扩展名被启用,下列额外的 命令格式会受到<
支持:<
for d %variable in do [command-parameters]<
如果集中包含通配符,则指定与目录名匹配,而不与文件<
名匹配。< r [[drive:]path] [command-<
检查以 [drive:]path 为根的目录树,指向每个目录中的< 语句。如果在 后没有指定目录,则使用当前<
目录。如果集仅为一个单点(.)字符,则枚举该目录树。< l (start,step,end) [command-para<
该集表示以增量形式从开始到结束的一个数字序列。<
因此,(1,1,5) 将产生序列 4 5,(5,-1,1) 将产生<
序列 (5 1)。< f [“options”] (file-set) (“string”) (command)
或者,如果有 usebackq 选项:<
filenameset 为一个或多个文件名。继续到 filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理。处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 for 循环。以默认方式, 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。您可通过指定可选 "options"参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同解析选项的关键字。这些关键字为:eol="c" - 指一个行注释字符的结尾(就一个)。skip="n" 指在文件开始时忽略的行数。delims="xxx" 指分隔符集。这个替换了空格和跳格键的<
默认分隔符集。<
tokens="x,y,m-n" 指每行的哪一个符号被传递到每个迭代的 本身。这会导致额外变量名称的格式为一个范围。通过 nth 符号指定 m符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之分配并接受行的保留文本。<
usebackq 指定新语法已在下类情况中使用:<
在作为命令执行一个后引号的字符串并且引号字符为文字字符串命令并允许在 fi中使用双引号扩起文件名称。< >sample1: “eol=";" tokens="一行指定最多" delims="=”" (myfile.txt) pre>
会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给 程序体;用逗号和 或空格定界符号。请注意,这个 程序体的语句引用 来取得第二个符号,引用 %j 来取得第三个符号,引用 %k来取得第三个符号后的所有剩余符号。对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使用双引号,您还需要使用 选项,否则,双引号会被理解成是用作定义某个要分析的字符串的。%i 专门在 语句中得到说明,%j 和 %k 是通过tokens="选项专门得到说明的。您可以通过" 26 个符号,只要不试图说明一个高于字母 z 或z 的变量。请记住,for变量是单一字母、分大小写和全局的;同时不能有 52 个以上都在使用中。<
您还可以在相邻字符串上使用 分析逻辑;方法是,用单引号将括号之间的 括起来。这样,该字符串会被当作一个文件中的一个单一输入行。最后,您可以用 命令来分析命令的输出。方法是,将括号之间的 变成一个反括字符串。该字符串会被当作命令行,传递到一个子 cmd.exe,其输出会被抓进内存,并被当作文件分析。<
因此,以下例子:< >for “usebackq %i< pre>
会枚举当前环境中的环境变量名称。<
ping命令<
ping命令可以测试计算机名和计算机的ip地址,严正与对方计算机的连接,通过向对方主机发送“网际消息控制协议 (icmp)”回响请求消息来验证与对方 tcp ip 计算机的 级连接。回响应答消息的接收情况将和往返过程的次数一起显示出来。ping 是用于检测网络连接性、可到达性和名称解析的疑难问题的主要 命令。如果不带参数,ping 将显示帮助。<
at命令<
at 命令安排在特定日期和时间运行命令和程序。<
要使用 at 命令,计划服务必须已在运行中。< [\computername] [id] delete] | delete yes]]< interactⅳe] every:date[,…] next:date[,…]] “command”<
\computername 指定远程计算机。如果省略这个参数,会计划在本地计算机上运行命令。<
id 指定给已计划命令的识别号。< delete 删除某个已计划的命令。如果省略 id,计算机上所有已计划的命令都会被删除。< yes 不需要进一步确认时,跟删除所有作业的命令一起使用。<
time 指定运行命令的时间。< interactive 允许作业在运行时,与当时登录的用户桌面进行交互。< every:date[,…] 指定在每周或每月的特定日期运行命令。如果省略日期,则默认为在的运行。< next:date[,…] 指定在下一个指定日期(如,下周四)运行命令。如果省略日期,则默认为在的运行。<
“command” 准备运行的 nt 命令或批处理程序。<
del命令<
del命令用于删除一个或多个文件。其命令格式为“del p] f] s] q][ a[[:]attributes]]names”。其中p用于删除每一个文件之前提示确认;f用于强制删除只读文件;s用于从所有子目录删除指定文件;q为安静模式,删除全局通配符时,不要求确认;a用于根据属性选择要删除的文件;attributes用于对应a所要删除文件的属性,包括的参数值中r代表只读文件,s代表系统文件,h代表隐藏文件,a代表存档文件,-表示“否”的前缀:names用于指定一个文件名或者一个目录,指定目录时,其中所包含的所有文件都会被删除
net命令<
这里只介绍开启网络服务和关闭网络服务的命令格式。<
“net start[service]”用于开启网络服务,servlce用于指定需要开启的网络服务名,若不指定则开启所有能够开启的网络服务 stop service”用于关闭网络服务,其中servlce是需要关闭的网络服务名,此项必须指定。<
特殊符号< >
&< 顺序执行多条命令,而不管命令是否执行成功<
例:copy nul 5.txt & 666 >>5.txt 5.txt<
创建5.txt文档,向5.txt文档中写入内容“666”,输出5.txt的内容。< li>
&&< 顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令<
||< 顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令(即:只有前面命令执行错误时才执行后面命令)<
|< 管道命令 前一个命令的执行结果输出到后一个命令 如:help|more<
“
>< code>” 清除文件中原有的内容后再写入<
“
>>< 追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件< ul>
# 脚本文件的标准开头 #! bin bash $0 # 输出当前文件名 $1,$2 #输出输入的第一个、第二个参数 $# 参数个数 $@ 所有的参数列表 (1+1) $? #输出上一条命令的返回结果 cd $(dirname $0) 就是进入到当前文件的父级目录下 pwd 就是当前的绝对位置 $(cd $0); pwd)< pre>".bat">