ECHO、IF、REM等命令介绍

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44390640/article/details/100089118

一、echo命令

  1. Echo :显示当前ECHO的状态:ECHO ON 或者ECHO OFF 。
  2. ECHO ON :ECHO状态设为ON,将显示命令行(如每行前的C:>等类似标志)。
  3. ECHO OFF:CHO状态设为OFF,将不显示命令行(如每行前的C:>等类似标志) 。
  4. ECHO 字符串 :将输入的字符串显示在CMD屏幕上。
  5. ECHO 字符串 &ECHO 字符串 … :&,类似and的意思,逻辑运算,用来显示多行数据。
  6. ECHO 字符串 > 文件路径和文件名:将字符串写入文件中,若已有数据将先清空后写入。
  7. ECHO 字符串 >> 文件路径和文件名 :将字符串写入文件中,若已有数据将追加到末尾。
    注意每次:ECHO 字符串 >> 文件路径和文件名,命令之后,ECHO就回自动在在字符串后添加换行符,所以要想直接添加到文件末尾,那么文件中已有的数据,不能是ECHO命令先前输入的(或者手工删掉换行符)
  8. (ECHO 字符串 &ECHO 字符串…)>文件路径和文件名 :
    将多行数据写入文件中(注意括号不能去掉,如果括号去掉的话,那么只能写入最后一个,前面的将输出在CMD窗口中。如果文件中已经有数据,将先自动清空后再写入。
  9. (ECHO 字符串 &ECHO 字符串…)>>路径和文件名
    将多行数据写入文件中(注意括号不能去掉,如果括号去掉的话,那么只能写入最后一个,前面的将输出在CMD窗口中。如果文件中已经有数据,就将该字符串追加到文件的末尾。
  10. (ECHO 字符串)>>文件路径和文件名:在文件中另起一行追加上字符串。如图所示:
  11. ECHO.:输出空行,即相当于输入一个回车
    注意命令行中的“.”要紧跟在ECHO后面中间不能有空格,否则“.”将被当作提示信息输出到屏幕。另外“.”可以用,:;+等任一符号替代。
  12.   ECHO答复语|命令文件名:自动答复命令中的提问 ,不需要人为的输入
    
  13.   ECHO ^G :“^G”是用Ctrl+G敲入连体符号,输入多个^G可以产生多声鸣响。
    

二、pause命令:执行到此句会暂停

三、@命令:与echo off相似,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。

四、call命令:call 调用另一条批处理文件(如果直接调用别的批处理文件 ,执行完那条文件后将无法执行当前文件后续命令)

CALL command
调用一条批处理命令,和直接执行命令效果一样,特殊情况下很有用,比如变量的多级嵌套。在批处理编程中,可以根据一定条件生成命令字符串,用call可以执行该字符串,见例子。
CALL [drive:][path]filename [batch-parameters]
调用的其它批处理程序。filename 参数必须具有 .bat 或 .cmd 扩展名。
CALL :label arguments
调用本文件内命令段,相当于子程序。被调用的命令段以标签:label开头
以命令goto :eof结尾。
另外,批脚本文本参数参照(%0、%1、等等)已如下改变:
批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 …)
批参数(%n)的替代已被增强。您可以使用以下语法:(看不明白的直接运行后面的例子)
%~1 - 删除引号("),扩充 %1
%~f1 - 将 %1 扩充到一个完全合格的路径名
%~d1 - 仅将 %1 扩充到一个驱动器号
%~p1 - 仅将 %1 扩充到一个路径
%~n1 - 仅将 %1 扩充到一个文件名
%~x1 - 仅将 %1 扩充到一个文件扩展名
%~s1 - 扩充的路径指含有短名
%~a1 - 将 %1 扩充到文件属性
%~t1 - 将 %1 扩充到文件的日期/时间
%~z1 - 将 %1 扩充到文件的大小
%~PATH:1−查找列在PATH环境变量的目录,并将PATH:1−查找列在PATH环境变量的目录,并将PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
并扩展到找到的第一个文件的驱动器号和路径。
%~ftza1 - 将 %1 扩展到类似 DIR 的输出行。
在上面的例子中,%1 和 PATH 可以被其他有效数值替换。
%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*使用
五、rem命令
rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的。:: 也可以起到 rem 的注释作用, 而且更简洁有效;

六、%命令
%表示参数,参数是指在运行批处理文件时在文件名后加的字符串。变量可以从 %0到%9,%0表示文件名本身,字符串用%1到%9顺序表示。
(1) %0的应用:
dos命令行下输入:BB(代表执行bb.bat批处理程序),%0代表本身文件,这出现了一个不断执行BB.bat命令的死循环

(2) %1到%9的应用

七、控制命令
(1)if “参数” == “字符串”  待执行的命令

      == 等于;EQU等于;NEQ不等于;LSS 小于;
 EQ 小于或等于;GTR 大于;GEQ大于或等于

(2)if exist 文件名  待执行的命令(eg:编辑BB1.txt文件)

(3)if errorlevel 数字  待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 1 goto x1,DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码

(4)OR [%%f] in (集合) DO [命令]
for %%c in (*.bat *.txt) do type %%c

八、目录切换
(1)CD X:\:同一个分区的切换

(2)CD /d F:\:不同分区的切换

(3)%cd%:显示当前的完整路径

九、目录切换 dir(略,自己去查)

十、attrib命令,设置文件属性

十一、常用命令命令(略)
Del:删除文件
Copy:复制文件
Xcopy:复制文件夹
Md:创建文件夹
rd:删除文件夹
ren:重命名文件(夹)
move:移动文件(夹)
find:字符串查找
findstr:字符串查找增强,可以进行模式匹配搜索
十二、常用网络命令和符号篇
命令的优先级高于重定向命令,重定向命令的优先级高于组合命令:|、>、&&
(1)重定向符 >、>>

重定向符, 意思是传递并且覆盖,它所起的作用是将运行的结果传递到后面的范围(后边可以是文件,也可以是默认的系统控制台,即命令提示符)。

重定向符将命令的输出结果追加到其后面的设备中去。这个符号的作用和>有点类似,但他们是有区别的 >>传递并在文件的末尾追加,而>是覆盖。用法同>一样的。

(2)命令管道符 |
echo Y|rd /s c:\abc,通过管道命令|将echo y 的结果传给rd /s c:\abc 命令,从而达到自动输入y 的目的。
(3) 组合命令 &、&&、||
:&,符号允许同时执行多条命令,当第一个命令执行失败了,也不影响后边的命令执行。这里 & 两边的命令是顺序执行的,从前往后执行。
&&符号允许同时执行多条命令,当碰到执行出错的命令后将不再执行后面的命令,如果一直没有出错则一直执行完所有命令。
正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令。
(4) 转义字符 ^
要输出特殊字符,就需要用 echo ^>、echo ^|、echo ||、echo ^^……之类的格式来处理
(5) 变量引导符 %
① 变量引用:当百分号成对出现,并且其间包含非特殊字符时,如%var%、%str%
② 形式参数的引用,%0 表示批处理文件本身,包括完整的路径和扩展名;%1至%9 表示第一个参数至第九个参数。
③ set /a 语句,表示两数相除取余数。在命令行窗口中,只需要单个的%,在批处理文件中,需要连续两个百分号,写成%%。
set /a num=4%%2,得到num为0而非2
④ 转义符号:如果要显示%本身时,需要在前面用%来转义。
echo 一个百分号:%%
echo 两个百分号:%%%%
echo 三个百分号:%%%%%%
(6)界定符 “”
① 在表示带有空格或特殊符号的路径时常要用"“来将路径括起来。
例1:cd /d cd “d:\program files^%*abc”
因为路径中带有空格和特殊符号,所以要用”"将路径括起来。
② 表示其中的内容是一个完整的字符串。
例2:set “var=abc 123456”
echo %var%

十三 、title
设置cmd窗口的标题
title 新标题 #可以看到cmd窗口的标题栏变了

十四、COLOR
设置默认的控制台前景和背景颜色。
COLOR [attr]
attr 指定控制台输出的颜色属性
颜色属性由两个十六进制数字指定 – 第一个为背景,第二个则为
前景。每个数字可以为以下任何值之一:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 湖蓝色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时
的颜色。这个值来自当前控制台窗口、/T 开关或
DefaultColor 注册表值。
如果用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令
会将 ERRORLEVEL 设置为 1。
例如: “COLOR fc” 在亮白色上产生亮红色

十五、GOTO 和 :
GOTO会点编程的朋友就会知道这是跳转的意思。
在批处理中允许以“:XXX”来构建一个标号,然后用GOTO XXX跳转到标号:XXX处,然后执行标号后的命令。
例:
if {%1}{} goto noparms
if "%2"
"" goto noparms
标签的名字可以随便起,但是最好是有意义的字符串啦,前加个冒号用来表示这个字符串是标签,goto命令就是根据这个冒号(:)来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。

例:
@echo off
:start
set /a var+=1
echo %var%
if %var% leq 3 GOTO start
pause
运行显示:
1
2
3
4

十六、find
在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] “string” [[drive:][path]filename[ …]]
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
“string” 指定要搜索的文字串,
[drive:][path]filename
指定要搜索的文件。
如果没有指定路径,FIND 将搜索键入的或者由另一命令产生的文字。
Find常和type命令结合使用
Type [drive:][path]filename | find “string” [>tmpfile] #挑选包含string的行
Type [drive:][path]filename | find /v “string” #剔除文件中包含string的行
Type [drive:][path]filename | find /c #显示文件行数
以上用法将去除find命令自带的提示语(文件名提示)

例:
@echo off
echo 111 >test.txt
echo 222 >>test.txt
find “111” test.txt
del test.txt
pause
运行显示如下:
---------- TEST.TXT
111
请按任意键继续. . .

例:
@echo off
echo 111 >test.txt
echo 222 >>test.txt
type test.txt|find “111”
del test.txt
pause
运行显示如下:
111
请按任意键继续. . .

十七、IF条件语句
IF 条件判断语句,语法格式如下:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
下面逐一介绍,更详细的分析请看后面章节。

(1) IF [NOT] ERRORLEVEL number command
IF ERRORLEVEL这个句子必须放在某一个命令的后面,执行命令后由IF ERRORLEVEL 来判断命令的返回值。
Number的数字取值范围0~255,判断时值的排列顺序应该由大到小。返回的值大于等于指定的值时,条件成立
例:
@echo off
dir c:
rem退出代码为>=1就跳至标题1处执行,>=0就跳至标题0处执行
IF ERRORLEVEL 1 goto 1
IF ERRORLEVEL 0 goto 0
Rem 上面的两行不可交换位置,否则失败了也显示成功。
:0
echo 命令执行成功!
Rem 程序执行完毕跳至标题exit处退出
goto exit
:1
echo 命令执行失败!
Rem 程序执行完毕跳至标题exit处退出
goto exit
:exit
pause
运行显示:命令执行成功!
(2) IF [NOT] string1string2 command
string1和string2都为字符的数据,英文内字符的大小写将看作不同,这个条件中的等于号必须是两个(绝对相等的意思)
条件相等后即执行后面的command
检测当前变量的值做出判断,为了防止字符串中含有空格,可用以下格式
if [NOT] {string1}
{string2} command
if [NOT] [string1][string2] command
if [NOT] "string1"
“string2” command
这种写法实际上将括号或引号当成字符串的一部分了,只要等号左右两边一致就行了,比如下面的写法就不行:
if {string1}==[string2] command

(3) IF [NOT] EXIST filename command
EXIST filename为文件或目录存在的意思
echo off
IF EXIST autoexec.bat echo 文件存在!
IF not EXIST autoexec.bat echo 文件不存在!
这个批处理大家可以放在C盘和D盘分别执行,看看效果

猜你喜欢

转载自blog.csdn.net/qq_44390640/article/details/100089118
今日推荐