bat 批处理命令 文件 类型 语法 格式 应用 详解.docx

上传人:b****5 文档编号:4599694 上传时间:2022-12-07 格式:DOCX 页数:12 大小:22.44KB
下载 相关 举报
bat 批处理命令 文件 类型 语法 格式 应用 详解.docx_第1页
第1页 / 共12页
bat 批处理命令 文件 类型 语法 格式 应用 详解.docx_第2页
第2页 / 共12页
bat 批处理命令 文件 类型 语法 格式 应用 详解.docx_第3页
第3页 / 共12页
bat 批处理命令 文件 类型 语法 格式 应用 详解.docx_第4页
第4页 / 共12页
bat 批处理命令 文件 类型 语法 格式 应用 详解.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

bat 批处理命令 文件 类型 语法 格式 应用 详解.docx

《bat 批处理命令 文件 类型 语法 格式 应用 详解.docx》由会员分享,可在线阅读,更多相关《bat 批处理命令 文件 类型 语法 格式 应用 详解.docx(12页珍藏版)》请在冰豆网上搜索。

bat 批处理命令 文件 类型 语法 格式 应用 详解.docx

bat批处理命令文件类型语法格式应用详解

                            bat批处理命令文件类型语法格式应用详解

大家知不知道默认共享这回事?

这东西用不着的地方可就不是好东西了.所以就要删掉.但这东西是每次系统重起后都会重新创建的.所以每次都要重新打开cmd重新删掉一下.极为麻烦.但有了批处理文件就不一样了,先把命令输入到批处理文件中,然后加入到启动项中,每次启动就会自动运行,免去了每次输入命令的麻烦.至于怎么写这个批处理文件嘛,到文章的结尾我会告诉大家的,但不知道在我写完之前会不会睡着呢?

  如何创建批处理文件?

    不要听了批处理文件就感到很神气,其实这东西很简单的.你用过记事本没有?

用过?

 好的.将记事本打开,什么都不用写,然后选择文件,保存.保存类型选择所有文件,文件名则命名为 *.bat 这个*代表是文件名,你可以随便的起.保存好之后,看看你保存的地方,会出现一个白色窗口里有个黄色齿轮的图标.这东西就是你创建的批处理文件,双击他就可以运行,但他现在由于里面没有输入任何命令,所以他运行了并不会做任何事情.当我们想往这个*.bat文件中添加东西时,只要右键选择他,然后选择编辑,就可以打开记事本往内输入命令了.

  批处理文件中的命令是什么?

  批处理文件中的命令暂时先可以理解为dos命令,等稍后深入理解了以后再进行解释.批处理顾名思义就是一大堆东西堆在一起处理.换句话说就是往里面写一条条dos命令,然后按顺序挨个执行,效果跟你在cmd里敲dos命令是一个效果.只不过用批处理写好之后,要运行只要双击下就可以运行了.而不用再一遍一遍的重复的往里面打命令.这就是批处理文件的好处.

  除了运行dos命令之外,他还可以支持选择结构if,循环结构for,goto等,与c有点类似,但远没有c全面,并且编写语言十分不规范.

  批处理语法:

先讲个最基本的东西 @echooff

  echo的意思是回旋,这里的意思就是回显,echo off意思就是关闭回显.前面的@表示echooff这一行也不会回显你可以试着去掉@和整行去掉.@的另一个功能是在执行完批处理文件时自动恢复命令回显。

如果第一句用的是ECHOOFF,那么在执行完批处理文件以后不会显示命令提示符。

举个例子:

如果我们先创建一个1.bat文件,往里面输入:

dir然后保存在c:

\下.然后我们运行cmd,进入c盘根目录下,输入1.bat,则显示:

C:

>dir

驱动器C中的卷没有标签。

卷的序列号是0C5D-07FF

C:

的目录

2004-08-2500:

45

WINDOWS

2004-08-2500:

51

DocumentsandSettings

...........

C:

如果将1.bat内容修改成

echooff

dir

然后再在cmd里输入1.bat,则会显示

C:

>echooff       //因为运行了echo off,所以没有显示dir命令,直接显示了结果

驱动器C中的卷没有标签。

卷的序列号是0C5D-07FF

C:

的目录

2004-08-2500:

45

WINDOWS

2004-08-2500:

51

DocumentsandSettings

.....

C:

如果将1.bat文件修改成:

@echooff

dir

则显示成:

C:

>1.bat//与前面不同,并没有显示echo off,原因是加了@,所以不显示@后面的内容.又因为加

        //了echo off,所以后面的命令不显示,直接显示结果

驱动器C中的卷没有标签。

卷的序列号是0C5D-07FF

C:

的目录

2004-08-2500:

45

WINDOWS

2004-08-2500:

51

DocumentsandSettings

....

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 thisisa.bat

calld:

b.bat

echodone

然后在d盘根目录下创建b.bat,内容为:

echothisisb.bat

保存后,打开cmd,进入c盘根目录,然后输入1.bat,显示如下:

C:

>a.bat

C:

>echothisisa.bat

thisisa.bat

C:

>calld:

b.bat

C:

>echothisisb.bat

thisisb.bat

C:

>echodone

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"thisisacanshu"

得到结果如下:

C:

>a.bat"thisisatest"

C:

>echo"thisisatest"

"thisisatest"

  输入的a"thisisacanshu"中,a为新建的a.bat的文件名a(后面的.bat可写也可不写),而a后面的 "thisisacanshu"这句话就是参数,写在这的参数,在程序运行中就将参数自动放到批处理程序中去.那么放在什么位置呢?

就是放在 %1的地方.

  看了例子,让我们看看整个关于参数的定义如何:

  批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符"%"。

  %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。

变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。

//我们上个程序的例子里就有%1,他就是参数,而输入中"this is a test"作为参数就直接放到%1的位置,于是程序就变成了echo"thisisatest".

  再举几个例子帮助你理解:

C:

根目录下一批处理文件名为b.bat,内容为:

@echooff

type%1    //type为dos中的输出命令,可以用来输出文本文件的内容,比如我们新建一个1.txt文件

         //里面输入内容,保存.进cmd,如果输入1.txt则看不了1.txt文件内容,但是如果我

         //想看怎么办呢?

这时候可以用type命令,只要在cmd里输入type 1.txt就能显示

         //1.txt文件中的内容了 

type%2

那么运行C:

>ba.txtb.txt

%1:

表示a.txt

%2:

表示b.txt

于是上面的批处理命令就变成了

@echooff

typea.txt

typeb.txt

于是上面的命令将顺序地显示a.txt和b.txt文件的内容。

没有编程基础的人可能要问,干什么要弄个参数啊?

在后面加个参数多麻烦啊?

直接往里面写不就好了啊?

其实这样想有对的方面也有错的方面.还是举个例子说明吧.

第一步还是在c盘根目录下新建一个批处理文件,我们取名仍为a.bat.往里面的内容输入为:

ping%1  //ping命令可以简单理解为测试一台机器开着还是没有开,如果开着的话,他就回给你回送回应.

然后进cmd,我们想测试下163的服务器是不是开着,则输入a

  对于知道ping命令的人,可以打ping进行检查,但如果想ping的人不知道ping命令怎么用,那怎么办啊?

这时候你就可以把命令预先输入到批处理文件中,保存好,然后让不会用的人进cmd,运行你的批处理文件,文件名后面加上他要ping 的网站地址就行了.换句话说,他想ping 163就直接加163的网址,想ping sina就直接加sina的网址.这样只要输入一个参数,而不用改程序本身,整个程序的通用性就大大提高了.

  这是对于一个简单的ping命令,你或许觉得用参数不值得,还是直接改不就好了啊.但如果程序有很多条,你一下找不到在哪改怎么办啊?

所以,不管你是菜哥,菜弟,菜姐,菜妹,只要运行下,输入参数,结果自己就会出来,不用再象你一样,考虑怎么编写批处理文件.人家只要知道是输入什么东西能让批处理程序运行,而编写的人则想的是如何让不懂程序的人能运行程序.

  批处理参数就这么简单,不知道你理解了没有?

但如果你想深一步了解批处理参数,可以接着往下看,如果不想深入了解,知道现在这么多也就够了.

以下粉红色内容为网上资料.

====================================

  因为参数只有1%-9%,但当我们要引用第十个或更多个参数时,就必须移动DOS的参数起始指针.shift命令正充当了这个移动指针的角色,它将参数的起始指针移动到下一个参数,类似C语言中的指针操作.图示如下:

初始状态,cmd为命令名,可以用%0引用

cmdarg1arg2arg3arg4arg5arg6arg7arg8arg9arg10

^^^^^^^^^^

&line;&line;&line;&line;&line;&line;&line;&line;&line;&line;

%0%1%2%3%4%5%6%7%8%9

经过1次shift后,cmd将无法被引用

cmdarg1arg2arg3arg4arg5arg6arg7arg8arg9arg10

^^^^^^^^^^

&line;&line;&line;&line;&line;&line;&line;&line;&line;&line;

%0%1%2%3%4%5%6%7%8%9

经过2次shift后,arg1也被废弃,%9指向为空,没有引用意义

cmdarg1arg2arg3arg4arg5arg6arg7arg8arg9arg10

^^^^^^^^^^

&line;&line;&line;&line;&line;&line;&line;&line;&line;&line;

%0%1%2%3%4%5%6%7%8%9

遗憾的是,win9x和DOS下均不支持shift的逆操作.只有在nt内核命令行环境下,shift才支持/n参数,可以以第一参数为基准返复移动起始指针.

=================

ifgotochoicefor高级语法

今天就写到这吧,我收拾收拾东西准备滚蛋回学校了.可能if goto choice for高级语法要在沈阳才能完成了,祝我好运吧.

======================

学校的"网吧"终于算重新开张了,抓紧时间把剩下的写完

if命令

说得通俗点,if就相当于我们白话里的如果.

举个例子:

如果a喜欢b,那么a就要娶b. 这句话翻译成计算机语言就成了

if a喜欢b a就要娶b.

当然拉,计算机不可能理解a喜欢b,a就要娶b这两句话,这里只是举个例子让你方便理解.

if语句一共有3种模式,如下:

IF[NOT]string1==string2command

IF[NOT]EXISTfilenamecommand

IF[NOT]ERRORLEVELnumbercommand

 NOT指定只有条件为false的情况下,WindowsXP才应该执行该命令。

 ERRORLEVELnumber如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为true。

 string1==string2如果指定的文字字符串匹配,指定条件为true。

 EXISTfilename如果指定的文件名存在,指定条件为true。

 command如果符合条件,指定要执行的命令。

如果指定的条件为FALSE,命令后可跟一个执行ELSE关键字后的命令的ELSE命令。

我们先讲解第一种:

IF[NOT]string1==string2command

自然语句意思:

如果string1==string2,那么执行command

下面再举个能实际应用的if语句.

自然语句:

如果输入的参数为3,那么显示"a=3"

计算机语句:

@echooff

if"%1"=="3"echo"a=3"

或者写成

@echooff

if%1==3echo"a=3"

注意:

当要测试的时候,因在cmd底下,输入1.bat3.因为这里用了是传递参数,具体看文章前部分"批处理文件参数".

第二种:

IF[NOT]EXISTfilenamecommand

这条命令用语检测文件是否存在.如果存在,执行command.如果不存在,则什么也不显示.

如:

我们想检查e盘根目录下是否有一个叫2.txt的文件.如果存在,则显示exist.如果不存在,则什么也不显示.

批处理命令如下:

@echooff

ifexiste:

2.txtecho"exist2.txt"

第三种:

IF[NOT]ERRORLEVELnumbercommand

这个我引用点资料,感觉别人写得更详细,引用部分为粉色字部分:

iferrorlevel<数字>待执行的命令

很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过iferrorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。

如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。

如iferrorlevel2gotox2

====注===========

返回值从大到小的顺序排列不是必须的,而只是执行命令为goto时的习惯用法,当使用set作为执行命令时,通常会从小到大顺序排列,比如需将返回码置入环境变量,就需使用以下的顺序形式:

iferrorlevel1setel=1

iferrorlevel2setel=2

iferrorlevel3setel=3

iferrorlevel4setel=4

iferrorlevel5setel=5

...

当然,也可以使用以下循环来替代,原理是一致的:

for%%ein(12345678...)doiferrorlevel%%esetel=%%e//此处为一个for循环,后面会继续                        介绍到的,看不懂可以先跳过去

iferrorlevel比较返回码的判断条件并非等于,而是大于等于.由于goto的跳转特性,由小到大排序会导致在较小的返回码处就跳出;而由于set命令的"重复"赋值特性,由大到小排序会导致较小的返回码"覆盖"较大的返回码.

另外,虽然iferrorlevel=<数字>command也是有效的命令行,但也只是解释命令行时将=作为命令行切分符而忽略掉罢了

choice命令

goto命令

for命令

for命令其实就是一个循环命令,如果我们想重复一个语句,就可以用for命令.通过for命令,可以控制循环的次数等.

语法:

FOR%variableIN(set)DOcommand[command-parameters]

%variable指定一个单一字母可替换的参数。

(set)指定一个或一组文件。

可以使用通配符。

command指定对每个文件执行的命令。

command-parameters

为特定命令指定参数或命令行开关。

在批处理文件中使用FOR命令时,指定变量请使用%%variable

而不要用%variable。

变量名称是区分大小写的,所以%i不同于%I.

  不知道你你看懂了没有,其实还是很容易理解的,还是举个例子吧.我想用type打印所有c盘根目录下的bat文件和txt文件.dos底下命令就是 type *.bat *.txt.先将该文件保存在c盘根目录下,名称为a.bat

用for命令如下:

for%%tin(*.bat*.txt)dotype%%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%variableIN(start,step,end)DOcommand[command-parameters]

该集表示以增量形式从开始到结束的一个数字序列。

因此,(1,1,5)将产生序列12345,(5,-1,1)将产生

序列(54321)

里面第一个1在start的位置,意思是起始位置,第2个1在step位置,英文意思是跨步,在这里面的意思是每次增量为1.后面的5在end的位置,意思是结束时的大小.

这句话的意思就是从1(start)开始增加,每次增加1(step),一直到变到5(end)为止.

这个有什么用呢?

其实我感觉这个东西的用处还是很大的.举个最简单的例子,我们想重复回显"iamthebest"这句话,重复显示10遍.那么for命令如下:

for/L%%ein(1,1,10)doecho"iamthebest"

这时,cmd就会重复输入"iamthebest"10遍.

===============================================

看完整篇文章了吗?

咳...我写的不容易啊....

现在不知道你对bat有了什么样的理解,我现在的感觉就是bat就是dos命令的组合,你把dos命令全写进bat命令,只要运行下bat就会挨个执行dos命令,这无疑提供了不少的方便。

下面我再举些实例.

删除默认共享:

对于默认共享不知道你了解多少,反正留着是个隐患,现在唯一的办法好象只能做个bat文件进行删除.命令如下:

netshareipc$/delete

netshareadmin$/delete

netsharec$/delete

netshared$/delete

netsharee$/delete

……

里面的c d e为你的盘符。

如果你只有一个分区,那么写到netsharec$/delete为止就可以了。

如果你有n个分区,那么就挨个写下去。

netshared$/delete

netsharee$/delete

netsharef$/delete

netshareg$/delete……

登陆到局域网的机器快捷方式(对方机器有密码且为2000或以上系统)

netuse\192.168.0.1[密码]/user:

[用户名]

explorer\192.168.0.1

bat文件备份注册表

setregfile=%date%//设置变量,下面出现%regfile%的都自动替换“当天date”

ifexist"%regfile%"gotoend//如果发现当天date命名的目录,跳到文件尾。

mdtemp//建temp目录

call1.bat//调用1.bat

del1.bat

ren2.bat1.bat

ren3.bat2.bat

ren4.bat3.bat

echomove"%regfile%"temp>4.bat//写移动“当天date命名的目录”到temp的bat文件。

md"%regfile%

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1