BAT经常使用命令

基本命令php

0.remhtml

  表示当前行是注释浏览器

一、@
它的做用是隐藏它后面这一行的命令自己(只能影响当前行)。eclipse

二、echo
中 文为“反馈”、“回显”的意思。它实际上是一个开关命令,就是说它只有两种状态:打开和关闭。因而就有了echo on和echo off两个命令了。直接执行echo命令将显示当前echo命令状态(off或on)执行echo off将关闭回显,它后面的全部命令都不显示命令自己,只显示执行后的结果。
echo. :输出空行,即至关于输入一个回车;值得注意的是命令行中的“.”要紧跟在ECHO后面中间不能有空格,不然“.”将被看成提示信息输出到屏幕。另外“.”能够用,:;”/[\]+等任一符号替代。post

 

有时候%须要前面加一个%进行转义,参考:http://www.javashuo.com/article/p-fpqpavle-hq.htmlui



三、start 命令
调用外部程序,全部的DOS命令和命令行程序均可以由start命令来调用。
start /wait :
start命令会启动软件的安装程序,而/wait命令会让系统在处理批处理文件中的下一条命令以前等待前一个软件安装完成。使用/wait命令是很重要的,只有这样才不会让批处理文件中的全部命令一会儿所有执行起来,那样将会致使同一时间运行多个软件的安装程序。
如:几秒钟让你的内存耗尽(例一):
@Echo off
Start
cmd:开启CMD程序)
%0spa


四、pause
中文为“暂停”的意思。它的做用,是让当前程序进程暂停一下,并显示一行信息:请按任意键继续. . .。咱们能够加 >nul把这个信息隐藏。.net

五、:和goto
为何要把这两个命令联合起来介绍?由于它们是分不开的,不管少了哪一个或多了哪一个都会出错。goto是个跳转命令,:是一个标签。当程序运行到goto时,将自动跳转到:定义的部分去执行了。如:为你的右键添加P处理(例二)
@echo off
echo 输入 1 后按回车键, 添加右键P处理
echo 输入 2 后按回车键, 退出
echo.
set /p start=请选择 (一、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
Exitfirefox

六、%(%[1-9]表示参数      %varname%表示取变量的名字)
这个百分号严格来讲是算不上命令的,它只是批处理中的参数。
%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量能够从%0到%9,%0有两个意义
一是表示批处理命令自己,还一个就是无限循环,其它参数字符串用%1到%9顺序表示。
如:
%0表示批处理命令自己
新建一个1.BAT文件。输入如下内容:
@echo off
del
%0
pause
你们看效果,1.BAT已经被删除了。
还一个意思无限循环!如例一。无限执行start cmd 这条命令!
%一、%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变量名   =号右边的是提示语,不是变量的值。变量的值由咱们运行后本身用键盘输入!命令行

七、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部分)。

八、call
在批处理脚本中,call命令用来从一个批处理脚本中调用另外一个批处理脚本。

 

九、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

十、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

十一、SET

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

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

 

cmd命令的变量类型只有字符串,因此不加双引号。若是变量值是数字,能够直接当数字使用。
须要使用双引号的状况是变量的值中有双引号或者特殊字符。
C:\Users\liqiang>set a="wwwwwww"

C:\Users\liqiang>echo %a%
"wwwwwww"

C:\Users\liqiang>set "a=wwwwwww"

C:\Users\liqiang>echo %a%
wwwwwww

C:\Users\liqiang>set "a=EEE\\   //EEE"

C:\Users\liqiang>echo %a%
EEE\\   //EEE

 



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

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

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

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

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

if "%start%"=="3" goto 3

 

 

 


管道命令:
一、|
它的做用,就是把前一命令执行的结果传到后一命令去处理。
如:help | more
回车后会发现显示满一屏幕后就自动暂停,等候继续显示其余信息。当按写回车时,变成一个一个的出现;按下空格键时一屏幕一屏幕显示,直到所有显示完为止;按其余键自动中止返回DOS。
这里结合了管道命令|和DOS命令more来共同达到目的的。
二、>、>>
这 两个命令的效果从本质上来讲都是同样的,他们都是输出重定向命令,说的通俗一点,就是把前面命令的输出写入到一个文件中。这两个命令的惟一区别 是,>会清除掉原有文件中的内容后把新的内容写入原文件,而>>只会另起一行追加新的内容到原文件中,而不会改动其中的原有内容。
三、<
<,输入重定向命令,从文件中读入命令输入,而不是从键盘中读入。
例:sort < list.txt > alphlist.txt
sort 命令按字母顺序排列文本文件或命令的输出。在此范例中,sort 命令对 List.txt 文件的行进行排序并显示结果,但不更改文件。并将结果存到 Alphlist.txt 文件中。

 

组合命令:

顾名思义,就是能够把多个命令组合起来当一个命令来执行。这在批处理脚本里是容许的,并且用的很是普遍。它的格式很简单----既然如今已经成了一个文件了,那么这多个命令就要用这些组合命令链接起来放在同一行----由于批处理认行不认命令数目。
一、&
这能够说是最简单的一个组合命令了,它的做用是用来链接n个DOS命令,并把这些命令按顺序执行,而无论是否有命令执行失败。如:copy a.txt b.txt /y & del a.txt
二、&&
这 个命令能够把它先后两个命令组合起来当一个命令来用,与&命令不一样之处在于,它在从前日后依次执行被它链接的几个命令时会自动判断是否有某个命令 执行出错,一旦发现出错后将不继续执行后面剩下的命令。这就为咱们自动化完成一些任务提供了方便。(固然这个和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
三、||
这个命令的用法和&&几乎同样,但做用恰好和它相反:利用这种方法在执行多条命令时,当遇到一个执行正确的命令就退出此命令组合,再也不继续执行下面的命令。
题目:查看当前目录下是否有以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就白写了。

 

几个符号:
一、符号(" ")
  " "符号容许在字符串中包含空格。进入一个特殊的目录能够用以下方法.例:
c:\>cd "Program Files"
c:\>cd progra~1
c:\>cd pro*
  以上方法均可以进入Program Files目录
二、符号(,)
  ,符号至关于空格。在某些特殊的状况下能够用,来代替空格使用。例:
c:\>dir,c:\
三、符号(;)
  ;符号当命令相同的时候能够将不一样的目标用;隔离开来但执行效果不变。如执行过程当中发生错误则只返回错误报告但程序仍是会继续执行。例:DIR C:\;D:\;E:\F:\
以上的命令至关于
DIR C:\
DIR D:\
DIR E:\
DIR F:\
四、符号“::”
这个符号的做用很简单,它是注释命令,在批处理脚本中和rem命令等效。它后面的内容在执行时不显示,也不起任何做用,由于它只是注释,只是增长了脚本的可读性。与rem 不一样的是, ::后的字符行在执行时不会回显,不管是否用echo on打开命令行回显状态。
五、符合“^”
^是对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意义。
好比echo test ^>1.txt
结果则是他没有追加在1.txt里,只是显示了出来

 

 

 

附几个本身的练习:

@Echo off
rem call start-server
start E:\酷狗\KGMusic\KuGou.exe
start E:\Eclipse\eclipse\eclipse.exe
start E:\hbuilder1\HBuilder\HBuilder.exe
rem 打开桌面上的eclipse,HBuilder,酷狗音乐。


E:
cd php\Test\第一个html
start 界面.html
rem 进入E盘打开本身设计的网页


cd E:\program files (x86)\Bin
start QQ.exe
rem 进入E盘打开本身腾讯QQ
rem start E:\搜狗浏览器\SogouExplorer\SogouExplorer.exe
rem start E:\fire\firefox.exe
rem 这是注释,echo off是之后的命令均不显示,pause是暂停,等待用户按键后继续。用echo是在dos界面显示字符
rem  cd desktop    


if exist 1.bat start 酷狗音乐
rem 这是注释,echo off是之后的命令均不显示,pause是暂停,等待用户按键后继续。用echo是在dos界面显示字符。上面是若果存在1.bat就打开酷狗音乐
goto next
:next
echo 不存在名为1.bat的文件
rem 调到goto指定的标号命令    :next表示标号


rem for %%c in (*.bat *.txt) do type %%c  
rem 读取索要.bat文件

set var=我是变量
echo %var%
rem set设置变量,取变量时变量名先后都要加%


set var1=1122
set var1=%var1:11=22%
echo %var1%
rem 将变量var1中的11替换为22

set var2=123456789
echo %var2:~0,5%
rem 这是从变量的从第一位开始,显示以后的五位(%var:~1,5的用法)

set var=123456789
echo %var:~-5%
rem 这是从变量的最后五位显示出来

set var3=123456789
set var3=%var:~3%
echo %var1%
rem 这是从变量的第四位开始的显示出来

set var4=123456789
echo %var4:~,3% 
rem 这是从变量的从第0位开始,显示以后的3位



rem set /p var=请输入变量的值:
rem echo  %var% 
rem 请输入变量是提示符,输入的字符为var变量的值

set var5=123456789
set/a var6=%var5%*2
echo %var1% 
rem  /a是变量能够进行运算,变量var6=变量var5*2

set "CURRENT_DIR=%cd%"  
rem 将当前驱动器目录赋值给变量CURRENT_DIR,%cd%是当前目录的值



@ECHO  OFF  
ECHO.  

ECHO  The  first  parameter  is  %1
ECHO  The  second  parameter  is  %2
ECHO  The  third  parameter  is  %3  
rem 参数的使用,文件名是1.bat,在cmd中输入1 2 3 4;%1就是取文件名后第一个字符,也就是2,依次类推%2是取文件名后第二个字符。

 

 

 

 

建立日期目录的脚本:

@ECHO OFF
cd C:\Users\liqiang\Desktop
set name=%date:~0,10%
set name=%name:/=-%
mkdir %name%
pause
相关文章
相关标签/搜索