专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »安全 » bat批处理命令:bat 批处理命令 文件 类型 语法 格式... »正文

bat批处理命令:bat 批处理命令 文件 类型 语法 格式...

来源: 发布时间:星期三, 2008年12月17日 浏览:6次 评论:0
如何创建批处理文件?    不要听了批处理文件就感到很神气其实这东西很简单.你用过记事本没有?用过? 好.将记事本打开什么都不用写然后选择文件保存.保存类型选择所有文件文件名则命名为 *.bat 这个*代表是文件名你可以随便起.保存好的后看看你保存地方会出现个白色窗口里有个黄色齿轮图标.这东西就是你创建批处理文件双击他就可以运行但他现在由于里面没有输入任何命令所以他运行了并不会做任何事情.当我们想往这个*.bat文件中添加东西时只要右键选择他然后选择编辑就可以打开记事本往内输入命令了.
  批处理文件中命令是什么?
  批处理文件中命令暂时先可以理解为dos命令等稍后深入理解了以后再进行解释.批处理顾名思义就是大堆东西堆在起处理.换句话说就是往里面写条条dos命令然后按顺序挨个执行效果跟你在cmd里敲dos命令是个效果.只不过用批处理写好的后要运行只要双击下就可以运行了.而不用再重复往里面打命令.这就是批处理文件好处.
  除了运行dos命令的外他还可以支持选择结构循环结构forgoto等和c有点类似但远没有c全面并且编写语言十分不规范标准.
  批处理语法:
先讲个最基本东西 @echo off
  echo意思是回旋这里意思就是回显echo off意思就是关闭回显.前面@表示echo off 这行也不会回显你可以试着去掉@和整行去掉.@个功能是在执行完批处理文件时自动恢复命令回显如果第句用是ECHO OFF那么在执行完批处理文件以后不会显示命令提示符
举个例子:如果我们先创建个1.bat文件往里面输入:
dir 然后保存在c:\下.然后我们运行cmd进入c盘根目录下输入1.bat则显示:
C:>dir
驱动器 C 中卷没有标签
序列号是 0C5D-07FF
C: 目录
2004-08-25 00:45 <DIR> WINDOWS
2004-08-25 00:51 <DIR> Documents and Settings
...........
C:
如果将1.bat内容修改成
echo off
dir
然后再在cmd里输入1.bat则会显示
C:>echo off       //运行了echo off所以没有显示dir命令直接显示了结果
驱动器 C 中卷没有标签
序列号是 0C5D-07FF
C: 目录
2004-08-25 00:45 <DIR> WINDOWS
2004-08-25 00:51 <DIR> Documents and Settings
.....
C:
如果将1.bat文件修改成:
@echo off
dir
则显示成:
C:>1.bat //和前面区别并没有显示echo off原因是加了@所以不显示@后面内容.又
        //了echo off所以后面命令不显示直接显示结果
驱动器 C 中卷没有标签
序列号是 0C5D-07FF
C: 目录
2004-08-25 00:45 <DIR> WINDOWS
2004-08-25 00:51 <DIR> Documents and Settings
....
C:
通过以上比较相信你对echo off命令已经充分掌握了.现在已经1点了...写得累啊!!!洗澡睡觉去了
----------------------
早晨6点就被拉起来了...我命苦啊那么继续写吧
----------------------
接下来讲call命令:
call是打电话call而不是”喔靠”靠:).call意思为.假如有2个批处理文件a.bat和b.bat.如果我想运行a.bat当中运行b.bat.如何运行呢?其实很简单只要在a.bat文件中输入call命令则可以在a.bat运行当中运行b.bat等b.bat运行完的后继续执行a.bat
call命令格式:
CALL [drive:][path]filename [batch-parameters]
batch-parameters 指定批处理所需命令行信息
举例如下我们在c盘根目录下创建a.bat文件内容为:
echo this is a.bat
call d:b.bat
echo done
然后在d盘根目录下创建b.bat内容为:
echo this is b.bat
保存后打开cmd进入c盘根目录然后输入1.bat显示如下:
C:>a.bat
C:>echo this is a.bat
this is a.bat
C:>call d:b.bat
C:>echo this is b.bat
this is b.bat
C:>echo done
done
由例子很容易看出来是先运行a.bat内容直到遇到call b.bat后b.bat运行完b.bat后再返回a.bat接着运行call b.bat后面echo done语句直至将a.bat所有批处理命令运行完.
注:里面有个[batch-parameters]里面所指参数是什么知道朋友能否告知不胜感激.
PAUSE 命令

暂停批处理执行并显示条消息提示用户按任意键继续执行只能在批处理中使用该命令
rem命令:
表示此命令后为解释行(注释)不执行只是给自己今后参考用(相当于注释).
同时你可以用两个冒号来替代rem.如: ::等同于个rem.但他们有个区别就是用::作注释话他是不回显即使你打echo on强制回显也没有同.同时rem可以在config.sys中加注释.
语法: rem[commnet]
批处理文件参数:
有点变成基础人都知道有参数.批处理文件也有参数.
我打个比方希望能帮助没有语言基础人也能看非常明白. 
我从例子里开始吧.首先在c盘根目录下创建个批处理文件 a.bat里面输入内容
echo %1
然后打开cmd然后进入c盘根目录.输入:a "this is a canshu"
得到结果如下:
C:>a.bat "this is a test"
C:>echo "this is a test"
"this is a test"
  输入a "this is a canshu"中a为新建a.bat文件名a(后面.bat可写也可不写)而a后面 "this is a canshu"这句话就是参数写在这参数运行中就将参数自动放到批处理中去.那么放在什么位置呢?就是放在 %1地方.
  看了例子让我们看看整个有关参数定义如何:
  批处理文件还可以像C语言样使用参数(相当于DOS命令命令行参数)这需要用到个参数表示符"%"
  %[1-9]表示参数参数是指在运行批处理文件时在文件名后加以空格(或者Tab)分隔变量可以从%0到%9%0表示批处理命令本身其它参数串用%1到%9顺序表示//我们上个例子里就有%1他就是参数而输入中”this is a test”作为参数就直接放到%1位置于是就变成了 echo "this is a test".
  再举几个例子帮助你理解:
C:根目录下批处理文件名为b.bat内容为:
@echo off
type %1     //type为dos中输出命令可以用来输出文本文件内容比如我们新建个1.txt文件
         //里面输入内容保存.进cmd如果输入1.txt则看不了1.txt文件内容但是如果我
         //想看如何办呢?这时候可以用type命令只要在cmd里输入type 1.txt就能显示
         //1.txt文件中内容了 
type %2

那么运行C:>b a.txt b.txt
%1 : 表示a.txt
%2 : 表示b.txt
于是上面批处理命令就变成了
@echo off
type a.txt
type b.txt
于是上面命令将顺序地显示a.txt和b.txt文件内容
没有编程基础人可能要问干什么要弄个参数啊?在后面加个参数多麻烦啊?直接往里面写不就好了啊?!其实这样想有对方面也有错方面.还是举个例子介绍说明吧.
步还是在c盘根目录下新建个批处理文件我们取名仍为a.bat.往里面内容输入为:
ping %1  //ping命令可以简单理解为测试台机器开着还是没有开如果开着他就回给你回送回应.
然后进cmd我们想测试下163服务器是不是开着则输入a www.163.com
  对于知道ping命令可以打ping进行检查但如果想ping人不知道ping命令如何用那如何办啊?这时候你就可以把命令预先输入到批处理文件中保存好然后让不会用人进cmd运行你批处理文件文件名后面加上他要ping 网站WebSite地址就行了.换句话说他想ping 163就直接加163网址想ping sina就直接加sina网址.这样只要输入个参数而不用改本身整个通用性就大大提高了.
  这是对于个简单ping命令你或许觉得用参数不值得还是直接改不就好了啊.但如果有很多条下找不到在哪改如何办啊?所以不管你是菜哥菜弟菜姐菜妹只要运行下输入参数结果自己就会出来不用再象你考虑如何编写批处理文件.人家只要知道是输入什么东西能让批处理运行而编写人则想是如何让不懂人能运行
  批处理参数就这么简单不知道你理解了没有?但如果你想深步了解批处理参数可以接着往下看如果不想深入了解知道现在这么多也就够了.
以下粉红色内容为网上资料.
====================================
  参数只有1%-9%但当我们要引用第十个或更多个参数时, 就必须移动DOS 参数起始指针. sht 命令正充当了这个移动指针角色, 它将参数起始指针移动到下个参数, 类似C 语言中指针操作. 图示如下:
状态, cmd 为命令名, 可以用 %0 引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
&line; &line; &line; &line; &line; &line; &line; &line; &line; &line;
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
经过1次sht后, cmd 将无法被引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
&line; &line; &line; &line; &line; &line; &line; &line; &line; &line;
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
经过2次sht后, arg1也被废弃, %9指向为空, 没有引用意义
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
&line; &line; &line; &line; &line; &line; &line; &line; &line; &line;
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
遗憾是, win9x 和DOS下均不支持 sht 逆操作. 只有在 nt 内核命令行环境下, sht 才支持 /n 参数, 可以以第参数为基准返复移动起始指针.
=
goto choice for高级语法
今天就写到这吧我收拾收拾东西准备滚蛋回学校了.可能 goto choice for高级语法要在沈阳才能完成了祝我好运吧.

学校"网吧"终于算重新开张了,抓紧时间把剩下写完
命令
说得通俗点就相当于我们白话里如果.
举个例子:如果a喜欢b那么a就要娶b. 这句话翻译成计算机语言就成了
 a喜欢b a就要娶b.
当然拉计算机不可能理解a喜欢ba就要娶b这两句话这里只是举个例子让你方便理解.
语句共有3种模式,如下:

IF [NOT] 12 command
IF [NOT] EXIST filename command
IF [NOT] ERRORLEVEL number command
 NOT 指定只有条件为 false 情况下 Windows XP 才应该执行该命令
 ERRORLEVEL number 如果最后运行返回个等于或大于指定数字退出编码指定条件为 true
 12 如果指定文字串匹配指定条件为 true
 EXIST filename 如果指定文件名存在指定条件为 true
 command 如果符合条件指定要执行命令如果指定条件为 FALSE命令后可跟个执行 ELSE关键字后命令 ELSE 命令
我们先讲解第种:
IF [NOT] 12 command
自然语句意思:如果1==2那么执行command
下面再举个能实际应用语句.
自然语句:如果输入参数为3那么显示”a=3”
计算机语句:
@echo off
"%1""3" echo "a=3"
或者写成
@echo off
%13 echo "a=3"
注意:当要测试时候,因在cmd底下,输入1.bat 3.这里用了是传递参数,具体看文章前部分"批处理文件参数".
第 2种:
IF [NOT] EXIST filename command
这条命令用语检测文件是否存在.如果存在执行command.如果不存在则什么也不显示.
如:我们想检查e盘根目录下是否有个叫2.txt文件.如果存在则显示exist.如果不存在则什么也不显示.
批处理命令如下:
@echo off
exist e:2.txt echo "exist 2.txt"
第 3种:
IF [NOT] ERRORLEVEL number command
这个我引用点资料感觉别人写得更详细引用部分为粉色字部分:
errorlevel <数字> 待执行命令
很多DOS在运行结束后会返回个数字值用来表示运行结果(或者状态)通过 errorlevel命令可以判断返回值根据区别返回值来决定执行区别命令(返回值必须按照从大到小顺序排列)如果返回值等于指定数字则条件成立运行命令否则运行下
errorlevel 2 goto x2
=
返回值从大到小顺序排列不是必须, 而只是执行命令为 goto 时习惯使用方法, 当使用 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下顺序形式:
errorlevel 1 el=1
errorlevel 2 el=2
errorlevel 3 el=3
errorlevel 4 el=4
errorlevel 5 el=5
...
当然, 也可以使用以下循环来替代, 原理是:
for %%e in (1 2 3 4 5 6 7 8...) do errorlevel %%e el=%%e //此处为个for循环后面会继续                        介绍到看不懂可以先跳过去
errorlevel 比较返回码判断条件并非等于, 而是大于等于. 由于 goto 跳转特性, 由小到大排序会导致在较小返回码处就跳出; 而由于 命令 "重复" 赋值特性, 由大到小排序会导致较小返回码 "覆盖" 较大返回码.
另外, 虽然 errorlevel=<数字> command 也是有效命令行, 但也只是 command.com 解释命令行时将 = 作为命令行切分符而忽略掉罢了

choice命令
????
goto命令
for命令
for命令其实就是个循环命令,如果我们想重复个语句,就可以用for命令.通过for命令,可以控制循环次数等.
语法:
FOR %variable IN () DO command [command-parameters]
%variable 指定个单字母可替换参数
() 指定个或组文件可以使用通配符
command 指定对每个文件执行命令
command-parameters
为特定命令指定参数或命令行开关
在批处理文件中使用 FOR 命令时指定变量请使用 %%variable
而不要用 %variable变量名称是区分大小写所以 %i 区别于 %I.
  不知道你你看懂了没有其实还是很容易理解还是举个例子吧.我想用type打印所有c盘根目录下bat文件和txt文件.dos底下命令就是 type *.bat *.txt.先将该文件保存在c盘根目录下,名称为a.bat
用for命令如下:
for %%t in (*.bat *.txt) do type %%t
%%t其实就是代表个参数内容在in 里面括号里内容.也就是说这句话里%%t就变成了*.bat *.txt了.do就是做意思,执行type命令,而type后面是%%t,而%%t又是*.bat *.txt.所以原来这句命令意思就变成了:
type *.bat *.txt
执行时进cmd,然后到c盘根目录下输入a.bat就可以打印出c盘根目录下所有扩展名为.bat和.txt文件内容了.
这里要注意:in后面有个空格.
在xp底下,for命令扩展名被起用因此for功能变得更加强大.下面讲个真正循环.

FOR /L %variab

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: