http://www.cnblogs.com/SunShineYPH/archive/2011/12/13/2285570.html

BAT常用命令

1、@ 它的作用是隐藏它后面这一行的命令本身(只能影响当前行)。 2、echo 中文为“反馈”、“回显”的意思。它其实是一个开关命令,就是说它只有两种状态:打开和关闭。于是就有了echo on和echo off两个命令了。直接执行echo命令将显示当前echo命令状态(off或on)执行echo off将关闭回显,它后面的所有命令都不显示命令本身,只显示执行后的结果。 echo. :输出空行,即相当于输入一个回车;值得注意的是命令行中的“.”要紧跟在ECHO后面中间不能有空格,否则“.”将被当作提示信息输出到屏幕。另外“.”可以用,:;”/[\]+等任一符号替代。

3、start 命令 调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。 start /wait : start命令会启动软件的安装程序,而/wait命令会让系统在处理批处理文件中的下一条命令之前等待前一个软件安装完成。使用/wait命令是很重要的,只有这样才不会让批处理文件中的所有命令一下子全部执行起来,那样将会导致同一时间运行多个软件的安装程序。 如:几秒钟让你的内存耗尽(例一): @Echo off Start cmd:开启CMD程序) %0 4、pause 中文为“暂停”的意思。它的作用,是让当前程序进程暂停一下,并显示一行信息:请按任意键继续. . .。我们可以加 >nul把这个信息隐藏。 5、:和goto 为什么要把这两个命令联合起来介绍?因为它们是分不开的,无论少了哪个或多了哪个都会出错。goto是个跳转命令,:是一个标签。当程序运行到goto时,将自动跳转到:定义的部分去执行了。如:为你的右键添加P处理(例二) @echo off echo 输入 1 后按回车键, 添加右键P处理 echo 输入 2 后按回车键, 退出 echo. set /p start=请选择 (1、2) 后按回车键: if "%start%"=="1" goto 1 if "%start%"=="2" goto 2 :1 @echo off color 1a reg add HKCR\.bat\ShellNew /v nullfile /f >nul reg add HKCR\batfile /ve /d P处理 /f >nul exit :2 Exit 6、% 这个百分号严格来说是算不上命令的,它只是批处理中的参数。 %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0有两个意义 一是表示批处理命令本身,还一个就是无限循环,其它参数字符串用%1到%9顺序表示。 如: %0表示批处理命令本身 新建一个1.BAT文件。输入以下内容: @echo off del %0 pause 大家看效果,1.BAT已经被删除了。 还一个意思无限循环!如例一。无限执行start cmd 这条命令! %1、%2……的意思: 例:@echo off echo %1 %2 %3 echo %1 echo %2 echo %3 进入CMD,输入cd c:\ 然后输入 test.bat 我是第一个参数 我是第二个参数 我是第三个参数 注意中间的空格,我们会看到这样的结果: 我是第一个参数 我是第二个参数 我是第三个参数 我是第一个参数 我是第二个参数 我是第三个参数 对比下代码,%1就是我是第一个参数 %2就是我是第二个参数 还有一个%*   他是什么呢?他的作用不是很大,只是返回参数而已,不过他是一次返回全部参数的值,不用在输入%1 %2来确定一个个的 例子 @echo off echo %* 同样保存为test.bat 放到C盘 进入CMD,输入cd c:\ 然后输入 test.bat 我是第一个参数 我是第二个参数 我是第三个参数 我是第四个参数 可以看到他一次把全部参数都显示出来了 现在说自定义变量 故名思意,自定义变量就是由我们来给他赋予值的变量;要使用自定义变量就得使用set命令了,看例子. @echo off set var=我是值 echo %var% pause 保存为BAT执行,我们会看到CMD里返回一个   "我是值" var为变量名,=号右边的是要给变量的值 这就是最简单的一种设置变量的方法了 如果我们想让用户手工输入变量的值,而不是在代码里指定,可以用用set命令的/p参数 例子: @echo off set /p var=请输入变量的值 echo %var% pause var变量名   =号右边的是提示语,不是变量的值。变量的值由我们运行后自己用键盘输入! 7、if if命令是一个表示判断的命令,根据得出的每一个结果,它都可以对应一个相应的操作。

(1)、输入判断

if "参数" == "字符串"  待执行的命令

  参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)

  如if "%1"=="a" format a: 再如例二。

(2)、存在判断。例: if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif 如果存在那些gif文件,就删除这些文件。注意,这里的条件判断是判断存在的,当然也可以判断不存在的,例如下面这句“如果不存在那些gif文件则退出脚本”:if not exist C:\Progra~1\Tencent\AD\*.gif exit。只是多一个not来表示否定而已。 (3)、结果判断。例: masm %1.asm if errorlevel 1 pause & edit %1.asm link %1.obj 这种用法是先判断前一个命令执行后的返回码(也叫错误码,DOS程序在运行完后都有返回码),如果和定义的错误码符合(这里定义的错误码为1),则执行相应的操作(这里相应的操作为pause & edit %1.asm部分)。 8、call 在批处理脚本中,call命令用来从一个批处理脚本中调用另一个批处理脚本。 9、find 这是一个搜索命令,用来在文件中搜索特定字符串,通常也作为条件判断的铺垫程序。这个命令单独使用的情况在批处理中是比较少见的,因为没什么实际意义。 下例中,如果不使用type命令列出a.txt中的内容,而是直接使用find命令在a.txt中找“8000”,就必须得给出这个a.txt的绝对路径,如果没有指定路径,find将搜索键入的或者由另一个命令产生的文字。这里的“另一个命令”指的就是type命令了。 @echo off cd\ netstat -an > a.txt type a.txt | find "8000" && echo "Congratulations! You have infected 灰鸽子!" del a.txt pause & exit

10、for

循环命令,只要条件符合,它将多次执行同一命令。 语法:FOR %%variable IN (set) DO command [command-parameters] 对一组文件中的每一个文件执行某个特定命令。 %%variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。

command-parameters 为特定命令指定参数或命令行开关。 例如一个批处理文件中有一行: for %%c in (*.bat *.txt) do type %%c 则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。

FOR %%a IN ( C: D: E: F: G: H: ) DO ATTRIB -R -H -S %%a\SXS.EXE & DEL /F /Q /A -R -H -S %%a\SXS.EXE & ATTRIB -R -H -S %%a\AUTORUN.INF & DEL /F /Q /A -R -H -S %%a\AUTORUN.INF

该命令删除根目录下所有SXS.EXE和AUTORUN.INF文件.

 在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。直接在命令行则只需要一个%号。变量名称是区分大小写的,所以 %i 不同于 %I

11、SET

显示、设置或删除 cmd.exe 环境变量。 

要显示当前环境变量,键入不带参数的 SET。

/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序操作。

如: set /p start=请选择 (1、2、3) 后按回车键:

if "%start%"=="1" goto 1

if "%start%"=="2" goto 2

if "%start%"=="3" goto 3 管道命令: 1、| 它的作用,就是把前一命令执行的结果传到后一命令去处理。 如:help | more 回车后会发现显示满一屏幕后就自动暂停,等候继续显示其他信息。当按写回车时,变成一个一个的出现;按下空格键时一屏幕一屏幕显示,直到全部显示完为止;按其他键自动停止返回DOS。 这里结合了管道命令|和DOS命令more来共同达到目的的。 2、>、>> 这两个命令的效果从本质上来说都是一样的,他们都是输出重定向命令,说的通俗一点,就是把前面命令的输出写入到一个文件中。这两个命令的唯一区别是,>会清除掉原有文件中的内容后把新的内容写入原文件,而>>只会另起一行追加新的内容到原文件中,而不会改动其中的原有内容。 3、< <,输入重定向命令,从文件中读入命令输入,而不是从键盘中读入。 例:sort < list.txt > alphlist.txt sort 命令按字母顺序排列文本文件或命令的输出。在此范例中,sort 命令对 List.txt 文件的行进行排序并显示结果,但不更改文件。并将结果存到 Alphlist.txt 文件中。 组合命令: 顾名思义,就是可以把多个命令组合起来当一个命令来执行。这在批处理脚本里是允许的,而且用的非常广泛。它的格式很简单----既然现在已经成了一个文件了,那么这多个命令就要用这些组合命令连接起来放在同一行----因为批处理认行不认命令数目。 1、& 这可以说是最简单的一个组合命令了,它的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败。如:copy a.txt b.txt /y & del a.txt 2、&& 这个命令可以把它前后两个命令组合起来当一个命令来用,与&命令不同之处在于,它在从前往后依次执行被它连接的几个命令时会自动判断是否有某个命令执行出错,一旦发现出错后将不继续执行后面剩下的命令。这就为我们自动化完成一些任务提供了方便。(当然这个和IF命令差不多,可以自己选择喜欢的方式) 小提示:有些命令是不能同时执行的 如:出道题:把C盘和D盘的文件和文件夹列出到a.txt文件中。 有人说,同时执行两个dir,然后把得到的结果>到a.txt里就ok了嘛: dir c:\ && dir d:\ > a.txt 错了!这样执行后a.txt里只有D盘的信息!为什么?就因为这里&&命令和>命令不能同时出现一个句子里(批处理把一行看成一个句子)!!组合命令&&的优先级没有管道命令>的优先级高!所以这句在执行时将本分成这两部分:dir c:\和dir d:\ > a.txt,而并不是如你想的这两部分:dir c:\ && dir d:\和> a.txt。要使用组合命令&&达到题目的要求,必须得这么写: dir c:\ > a.txt && dir d:\ >> a.txt 当然这里还可以利用&命令:dir c:\ > a.txt & dir d:\ >> a.txt 3、|| 这个命令的用法和&&几乎一样,但作用刚好和它相反:利用这种方法在执行多条命令时,当遇到一个执行正确的命令就退出此命令组合,不再继续执行下面的命令。 题目:查看当前目录下是否有以s开头的exe文件,如果有则退出。例: @echo off dir s*.exe || exit 其实这个例子是有破绽的,如果存在那个exe文件,就退出;如果不存在那个exe文件,也退出!为什么?因为如果不存在那个.exe文件,则前一条命令dir s*.exe执行肯定是不成功的,所以就继续执行exit,自然就退出了。那么如何解决题目给出的问题呢?看下例: @echo off dir s*.exe || echo Didn't exist file s*.exe & pause & exit 这样执行的结果,就能达到题目的要求,是否存在s*.exe将出现两种结果。这里加暂停的意思,当然是让你能看到echo输出的内容,否则一闪而过的窗口,echo就白写了。 几个符号: 1、符号(" ")   " "符号允许在字符串中包含空格。进入一个特殊的目录可以用如下方法.例: c:\>cd "Program Files" c:\>cd progra~1 c:\>cd pro*   以上方法都可以进入Program Files目录 2、符号(,)   ,符号相当于空格。在某些特殊的情况下可以用,来代替空格使用。例: c:\>dir,c:\ 3、符号(;)   ;符号当命令相同的时候可以将不同的目标用;隔离开来但执行效果不变。如执行过程中发生错误则只返回错误报告但程序还是会继续执行。例:DIR C:\;D:\;E:\F:\ 以上的命令相当于 DIR C:\ DIR D:\ DIR E:\ DIR F:\ 4、符号“::” 这个符号的作用很简单,它是注释命令,在批处理脚本中和rem命令等效。它后面的内容在执行时不显示,也不起任何作用,因为它只是注释,只是增加了脚本的可读性。与rem 不同的是, ::后的字符行在执行时不会回显,无论是否用echo on打开命令行回显状态。 5、符合“^” ^是对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意义。 比如echo test ^>1.txt 结果则是他没有追加在1.txt里,只是显示了出来

每天早上敲醒自己的不是闹钟,是夢想!

BAT command的更多相关文章

  1. (转)Bat Command

    1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置.语法 echo [{on|off}] [message] Sample篅echo off ...

  2. How to generate file name according to datetime in bat command

    On the command line, note: must copy and paste below lines of code and then execute them one by one: ...

  3. Useful bat command

    1.Start and stop the windows services net stop <service name>net start <service name>net ...

  4. PEAR安装

    看到PEAR章节,提到安装PEAR需要go-pear.bat,我机器上的PHP(v7.0.8)目录下,并没有go-pear.bat这个文件,网上查了一遍,怎么说的都有,最后还是在官网上找到解决方案. ...

  5. Python 3.5安装JPype

    使用命令pip install jpype1可安装jpype. 如果出现如下情况: creating build\lib.win-amd64-3.5\jpypex copying jpypex\__i ...

  6. sso demo ( cas )

    1. generate keystore command : keytool -genkey -alias testtomcat -keyalg RSA -keystore "C:\User ...

  7. WINDOWS下PHP 的pear DB的安装(本地环境:PHP5.4.15+Apache+mysql)

    因为需要安装phpunit,要先装pear,网上的教程大多数是以双击go-pear.bat开始,但是我安装的php文件夹里压根没有这个文件. 经过几次搜索之后终于找到了办法. 解决步骤如下: 1.下载 ...

  8. 基于POI和DOM4将Excel(2007)文档写进Xml文件

    刚进公司的training, 下面是要求: Requirements Write a java program to read system.xlsx Use POI API to parse all ...

  9. Isight 命令行运行任务

    说明书参考:https://abaqus-docs.mit.edu/2017/English/DSSIMULIA_Established.htm 不一定对版本.但是大部分还可以. 不对的可以在命令里敲 ...

随机推荐

  1. 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\41c191fd\ff9345c5\App_Web_login.cshtml.65793277

    本地开发环境没问题,但是发布到服务器出现问题或则直接在IIS上修改东西就给我抛出以下错误: 未能写入输出文件"c:\Windows\Microsoft.NET\Framework64 \v4 ...

  2. 【caffe】create_mnist.sh在windows下的解决方案

    @tags caffe 在windows下使用caffe时,如果先前没有啥经验,会考虑按照官方文档中的例子跑一跑.比如mnist手写数字识别. 然后就会遇到这个问题:windows下怎么执行/exam ...

  3. linux下命令运行目录上程序前面要加./

    linux命令行上默认运行path系统变量的路径的程序,所以我们在运行时命令时会在系统变量中查找,而发现查找完系统变量之后是不会再查找当前目录的. 有以下方式解决: 1.在运行当前目录的程序时,前面加 ...

  4. Bzoj1001 [BeiJing2006]狼抓兔子

    Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 19759  Solved: 4883 Description 现在小朋友们最喜欢的"喜羊羊与 ...

  5. crawler:简要了解一下PhantomJS

    有时,我们需要浏览器处理网页,但并不需要浏览,比如生成网页的截图.抓取网页数据等操作.PhantomJS的功能,就是提供一个浏览器环境的命令行接口,你可以把它看作一个“虚拟浏览器”,除了不能浏览,其他 ...

  6. 数据结构算法C语言实现---序言

    期末考试即将到来,打算花两周时间实现书上所有的算法.巩固学习成果(其实之前也没怎么听课......)毕竟考前突击,背背,ppt刷个90+是没多大意义的. 没错,就是下面这本 毕竟书也是借别人的,不抓紧 ...

  7. Unity 依赖注入知识点

    三种依赖注入方法,构造器注入.属性注入.方法注入 可以配置Config文件,来实现不用修改代码.需要先将接口与实体关联,然后使用时会自动加载对应实体. namespace WeChatConsole ...

  8. Install R & RStudio for Ubuntu

    Install R r-project.org official source to install the latest R system. add R source   sudo vi /etc/ ...

  9. JQuery 和JavaScript的区别

    Google提供的jquery包: http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js jQuery官方的jquery包: ...

  10. DataReader和DataSet的异同

    DataReader:使用时始终占用SqlConnection,在线操作数据库:每次只在内存中加载一条数据,所以占用的内存是很小的:是只进的. 只读的. DataSet:则是将数据一次性加载在内存中. ...