菜单

bat常用命令,转【http://www.cnblogs.com/yplong/archive/二〇一二/04/02/2996550.html】

2019年2月17日 - www6165com

Windows cmd

一.简单批处理其中命令简介
1.Echo 命令
开辟回显或关闭请求回显作用,或显示音讯。假如没有其余参数,echo
命令将显示当前回显设置。
语法
echo [{ on|off }] [message]
Sample:@echo off / echo hello world
在其实使用中我们会把那条命令和重定向符号(也号称管道符号,一般用>
>>
^)结合来促成输入一些限令到特定格式的文件中.这将在后来的例证中反映出来。

windows bat(批处理)——基础语法

1、@
它的功力是藏匿它背后这一行的通令自个儿(只可以影响当下行)。
2、echo
汉语为“反馈”、“回显”的情致。它实在是二个开关命令,就是说它唯有两种情况:打开和倒闭。于是就有了echo
on和echo
off三个指令了。间接执行echo命令将显得当前echo命令状态(off或on)执行echo
off将闭馆回显,它背后的兼具命令都不显示命令自个儿,只呈现执行后的结果。
echo.
:输出空行,即一定于输入三个回车;值得注意的是命令行中的“.”要紧跟在ECHO前面中间无法有空格,否则“.”将被看做指示消息输出到显示器。其它“.”可以用,:;”/[\]+等任一符号替代。

对此跨平台的次序,平时会提供部分得力的命令行工具,因而shell脚本、bat脚本文件就少不了了。网络上shell的书、小说都游人如织的,所以精通起来会相对简单的多,而windows下的bat网上则少有关系。那里不打算写windows
bat 编程大全,而是大概对bat做八个简易的入门级的求学。

2.@ 命令
代表不显得@前边的指令,在侵袭过程中(例如使用批处理来格式化敌人的硬盘)自然不可以让对方看来您利用的吩咐啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite…
@format X: /q/u/autoset (format
那么些命令是不得以应用/y这几个参数的,可喜的是微软留了个autoset那一个参数给大家,效果和/y是一样的。)

 

3、start 命令
调用外部程序,全体的DOS命令和指令行程序都得以由start命令来调用。
start /wait :
start命令会运转软件的安装程序,而/wait命令会让系统在处理批处理公事中的下一条命令以前等待前三个软件设置到位。使用/wait命令是很要紧的,唯有这么才不会让批处理文件中的全数命令一下子总体实践起来,那样将会促成同一时半刻间运转七个软件的安装程序。
如:几分钟让你的内存耗尽(例一):
@Echo off
Start
cmd:开启CMD程序)
%0
4、pause
粤语为“暂停”的趣味。它的作用,是让日前先后进程暂停一下,并显示一行音信:请按任意键继续.
. .。大家得以加 >nul把这么些音信隐藏。
5、:和goto
缘何要把那三个指令一道起来介绍?因为它们是分不开的,无论少了哪些或多了哪些都会出错。goto是个跳转命令,:是2个标签。当程序运维到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
Exit
6、%
以此百分号严谨来说是算不上命令的,它只是批处理中的参数。
%[1-9]代表参数,参数是指在运作批处理公事时在文书名后加的以空格(或然Tab)分隔的字符串。变量可以从%0到%9,%0有八个意思
一是表示批处理命令自个儿,还一个就是最为循环,其他参数字符串用%1到%9顺序表示。
如:
%0表示批处理命令本身
新建三个1.BAT文件。输入以下内容:
@echo off
del
%0
pause
世家看效用,1.BAT早已被删去了。
还2个趣味无限循环!如例一。无限执行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个结实,它都得以对应几个相应的操作。

任凭在写shell,照旧bat,它们的规划都听从那样一条规则:一切都以命令。Windows下命令是大小写不敏感的。

3.Goto 命令
点名跳转到标签,找到标签后,程序将处理从下一行开头的通令。
语法:goto label (label是参数,内定所要转向的批处理程序中的行。)
Sample:
if { %1 }=={ } goto noparms
if { %2 }=={ } goto
noparms(即使那里的if、%壹 、%2你不通晓的话,先跳过去,前边会有详实的解说。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
标签的名字可以随便起,不过最为是有含义的假名啦,字母前加个:用来代表那么些字母是标签,goto命令就是基于那些:来寻觅下一步跳到到那里。最好有一对表达这样你外人看起来才会精通您的打算啊。

  1. @

(1)、输入判断

 

4.Rem 命令
诠释命令,在C语言中一定与/*——–*/,它并不会被实践,只是起3个申明的机能,便于旁人阅读和你协调随后涂改。
Rem Message
Sample:@Rem Here is the description.

行首有了它的话,这一行的吩咐就不显得了。

if “参数” == “字符串”  待执行的指令

骨干命令(rem, echo, @,/?)

rem:注释 (comment, remarks)。参数可以是其余内容。

echo :它有五个职能:打印消息、调试开关。假若参数是on
可能off,代表打开、关闭调试,如若前面是此外内容,则参数代表要出口的音信。为啥就是debug开关呢?要是设置了echo
on,随后履行的其余命令及其实施结果都会输出到正式输出流。

@用来关闭有些命令的调试消息,意思是说选择@标注的通令不会打出命令本身、执行结果。

/? 查看命令帮忙

例如:

REM open the cmd echo
@echo on
echo hello, windows cmd 
@echo hello, windows cmd 

REM close the cmd echo
@echo off
echo hello, windows cmd 
@echo hello, windows cmd

 

进行结果: 

D:\Note\windows cmd>REM open the cmd echo

D:\Note\windows cmd>echo hello, windows cmd
hello, windows cmd
hello, windows cmd

D:\Note\windows cmd>REM close the cmd echo
hello, windows cmd
hello, windows cmd

 

对此REM的通令,也是会打到STD里,如若不希望观察,就足以采用@标注。 

 

 

5.Pause 命令

  1. echo

  参数尽管等于指定的字符串,则条件建立,运营命令,否则运维下一句。(注意是三个等号)

操纵命令(if-else, for-in-do, goto)

 

运维 Pause 命令时,将显示下边的音讯:
Press any key to continue . . .
Sample:
@echo off
:begin
copy a:*.* d://back
echo Please put a new disk into driver A
pause
goto begin
在那一个事例中,驱动器 A
中磁盘上的持有文件均复制到d://back中。突显的注释提示您将另一张磁盘放入驱动器
A 时,pause 命令会使程序挂起,以便你更换磁盘,然后按任意键继续处理。

2.1  echo [{on|off}] [message]

  如if “%1″==”a” format a:
再如例二。

if-else

 

if [noterrorlevel number command [else expression] 基于上一个命令执行的结果进行判定操作

if [notstring1==string2 command [else expression] 判定两个字符串是否相等

if [notexist FileName command [else expression]  判定指定的文件是否存在

If command extensions are enabled, use the following syntax:

if [/istring1 CompareOp string2 command [else expression] 进行字符串比较 (equ, neq, lss, leq, gtr, geq)

if cmdextversion number command [else expression]

if defined variable command [else expression]

 

 

 

6.Call 命令
从两个批处理程序调用另2个批处理程序,并且不鸣金收兵父批处理程序。call
命令接受用作调用目标的标签。如若在本子或批处理公事外使用
Call,它将不会在命令行起成效。
语法
call [[Drive:][Path] FileName [BatchParameters]] [:label
[arguments]]
参数
[Drive: }[Path] FileName
钦命要调用的批处理程序的职位和名称。filename 参数必须具有 .bat 或 .cmd
扩张名。

输出,回显。

(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
那是1个寻找命令,用来在文书中找寻一定字符串,日常也作为规范判断的反衬程序。这些命令独立使用的情状在批处理中是相比少见的,因为没什么实际意义。
下例中,若是不应用type命令列出a.txt中的内容,而是间接运用find命令在a.txt中找“八千”,就非得得付出那些a.txt的相对路径,假设没有点名路线,find将追寻键入的要么由另2个下令爆发的文字。那里的“另多少个命令”指的就是type命令了。
@echo off
cd\
netstat -an > a.txt
type a.txt | find “8000” && echo “Congratulations! You have infected
灰鸽子!”
del a.txt
pause & exit

For-in-do

巡回执行,命令语法:

for {%variable | %%variable} in (set) do command [CommandLineOptions]

1)For, in, do 是着力协会,必不可少;

2){%variable | %%variable} 须要的,变量大小写敏感。

在指令指示符中执行for时,for中引用变量时,使用%

在批处理公事中举行for时,for中引用变量时,使用%%

其它,为了防止与bat文件的参数 %0到 %9相争辩,所以变量不可以是0-9的数字

3)( set ) 要求的。用于指定多个 files, directories, range of values,
textstrings。括号无法省。

 

4)command 须求的,代表要履行的指令。

5)commandLineOptions, 执行command时所需的参数

 

愈来愈多用法,可能参考:

 

 

7.start 命令
调用外部程序,全体的DOS命令和下令行程序都得以由start命令来调用。
侵略常用参数:
MIN 起首时窗口最小化
SEPARATE 在分其余长空内初阶 16 位 Windows 程序
HIGH 在 HIGH 优先级档次先河应用程序
REALTIME 在 REALTIME 优先级档次先导应用程序
WAIT 运行应用程序并听候它为止
parameters 这一个为传送到命令/程序的参数
举行的应用程序是 32-位 GUI 应用程序时,CMD.EXE
不等应用程序终止就回去命令提醒。要是在命令脚本内实施,该新行为则不会爆发。
8.choice 命令
choice
使用此命令可以让用户输入一个字符,从而运营区其他命令。使用时应当加/c:参数,c:后应写指示可输入的字符,之间无空格。它的重返码为1234……
如: choice /c:dme defrag,mem,end
将显示
defrag,mem,end[D,M,E]?
Sample:
Sample.bat的内容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (应先判断数值最高的错误码)
if errorlevel 2 goto mem
if errotlevel 1 goto end

2.2 on | off

10、for

goto

语法:goto label

跳转到内定的label。借使钦命的label不设有,就继续执行下一条命令。假设找到label,就从label处继续执行。假若程序以健康顺序执行到三个label处,而不是因而goto跳转到label,label下的口舌照旧以健康顺序执行。

 

金沙国际 1 

 

 

想要明白愈多指令参见:

 

 

 

 

 

 

 

:defrag
c://dos//defrag
goto end
:mem
mem
goto end
:end
echo good bye

它事实上是三个开关命令,就是说它唯有三种情景:打开和倒闭。于是就有了echo
on和echo off七个指令了。

巡回命令,只要条件相符,它将反复执行同样命令。
语法:FOR %%variable IN (set) DO command [command-parameters]
对一组文件中的每两个文本举办有个别特定命令。
%%variable 内定七个十足字母可替换的参数。 (set)
指定一个或一组文件。可以运用通配符。
command
点名对各类文件实施的吩咐。

此文件运转后,将显示 defrag,mem,end[D,M,E]? 用户可选用d m e
,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每种程序段最终都以goto
end将次第跳到end标号处,然后程序将显得good bye,文件截至。

(1)echo off

command-parameters
为特定命令钦定参数或命令行开关。
譬如说贰个批处理公事中有一行:
for %%c in (*.bat *.txt) do type %%c
则该命令行会呈现当前目录下全部以bat和txt为增添名的文本的故事情节。

9.If 命令

只展现执行结果

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

if 表示将判断是不是符合规定的尺度,从而决定实施不一的授命。 有三种格式:

(2)echo on (默认)

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

一 、if “参数” == “字符串” 待执行的指令
参数假使等于钦赐的字符串,则条件建立,运转命令,否则运营下一句。(注意是三个等号)
如if “%1″==”a” format a:
if { %1 }=={ } goto noparms
if { %2 }=={ } goto noparms

展现执行命令(除echo)和推行结果

 在批处理文件中使用 FOLacrosse 命令时,指定变量请使用 %%variable 而毫无用
%variable。直接在指令行则只必要贰个%号。变量名称是分别轻重缓急写的,所以 %i
差别于 %I

二 、if exist 文件名 待执行的授命
若是有钦点的文件,则条件建立,运营命令,否则运营下一句。
如if exist config.sys edit config.sys

(3)> 输出重定向

11、SET

③ 、if errorlevel / if not errorlevel 数字 待执行的吩咐
如果重返码等于指定的数字,则条件建立,运转命令,否则运转下一句。
如if errorlevel 2 goto x2
DOS程序运营时都会回去3个数字给DOS,称为错误码errorlevel或称重回码,常见的回到码为0、1。

创办或清空文件,然后把多少输出到文件

浮现、设置或删除 cmd.exe 环境变量。 

10.for 命令
for 命令是一个比较复杂的一声令下,主要用以参数在内定的范围内循环执行命令。
在批处理文件中动用 FO凯雷德 命令时,钦定变量请使用 %%variable

echo hi > a.txt

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

for { %variable|%%variable } in (set) do command [
CommandLineOptions]
%variable 内定多个十足字母可替换的参数。
(set) 钦点贰个或一组文件。能够采用通配符。
command 内定对每种文件实施的下令。
command-parameters 为一定命令钦点参数或命令行开关。
在批处理文件中运用 FOENVISION 命令时,钦点变量请使用 %%variable
而不要用 %variable。变量名称是分别轻重缓急写的,所以 %i 差距于 %I

把多少追加到文件

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

借职分令增加名被启用,下列额外的 FO卡宴 命令格式会遭到
支持:

echo this is a text >>a.txt

/A
命令行开关钦命等号左侧的字符串为被评估的数字表明式。该表达式评估器很简短并以递减的优先权顺序操作。

FOR /D %variable IN (set) DO command [command-parameters]

 

如: set /p start=请选取 (壹 、贰 、3) 后按回车键:

比方集中包蕴通配符,则钦赐与目录名匹配,而不与公事
名匹配。

echo hi > a.txt

if “%start%”==”1” goto 1

FOR /R [[drive:]path] %variable IN (set) DO command [command-

type a.txt

if “%start%”==”2” goto 2

检查以 [drive:]path 为根的目录树,指向各种目录中的
FO奥迪Q7 语句。假如在 /Evoque 后没有点名目录,则利用当前
目录。尽管集仅为壹个单点(.)字符,则枚举该目录树。

echo this is a text >>a.txt

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盘的音讯!为何?就因为此地&&命令和>命令不可能同时出现2个句子里(批处理把一行看成二个句子)!!组合命令&&的优先级没有管道命令>的预先级高!所以那句在推行时将本分成那两有个别: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、符号(” “)
  ”
“符号允许在字符串中带有空格。进入3个奇特的目录可以用如下方法.例:
c:\>cd “Program Files”
c:\>cd progra~1
c:\>cd pro*
  以上措施都可以进来Program Files目录
2、符号(,)
  ,符号约等于空格。在一些特殊的景况下可以用,来替代空格使用。例:
c:\>dir,c:\
3、符号(;)
  ;符号当命令相同的时候可以将差其他靶子用;隔离开来但实施职能不变。如举行进度中爆发错误则只回去错误报告但顺序如故会继续执行。例:DICR-VC:\;D:\;E:\F:\
如上的吩咐约等于
DIR C:\
DIR D:\
DIR E:\
DIR F:\
4、符号“::”
以此符号的成效很简短,它是注释命令,在批处理脚本中和rem命令等效。它背后的始末在执行时不突显,也不起任何成效,因为它只是注释,只是增添了本子的可读性。与rem
不相同的是, ::后的字符行在举行时不会回显,无论是或不是用echo
on打开命令行回显状态。
5、符合“^”
^是对特殊符号”<“,”>”,”&”的开头字符,在命令中她将上述三个标志的出格效果去掉,仅仅只把他们当成符号而不选拔他们的特有含义。
比如echo test ^>1.txt
结果则是他从未增添在1.txt里,只是展现了出来

FOR /L %variable IN (start,step,end) DO command [command-para

type a.txt

每一日早晨敲醒本人的不是闹钟,是夢想!

该集表示以增量方式从先导到竣工的一个数字连串。

 

应用批处理公事

  1. 注释

——常用命令

:: 或 rem

echo、@、call、pause、rem
是批处理公事最常用的多少个指令,大家就从他们先河学起。 echo
代表突显此命令后的字符
echo off 表示在此语句后全数运维的授命都不出示命令行本人
@ 与echo
off相象,但它是加在其它命令行的最前面,表示运维时不显示命令行本身。
call 调用另一条批处理文件(如若直白调用其他批处理公事
,执行完这条文件后将不能推行当前文件屡次三番命令)
pause 运营此句会暂停,展现Press any key to continue…
等待用户按任意键后持续
rem 表示此命令后的字符为表达行,不执行,只是给协调随后摸索用的

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图