日期:2012-08-13 05:26:00 来源:本站整理
Windows中的批处理的常用标记介绍[Windows安全]
本文“Windows中的批处理的常用标记介绍[Windows安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
点评:本文介绍Windows批处理常用标记1.@ 号令行回显屏蔽符
ECHO OFF可以关闭掉整个批处理号令的回显,但不能关掉ECHO OFF这个号令本身,目前我们在ECHO OFF这个号令前加个@,便可以到达全部号令均不回显的要求.
该标记在批处理中的作用是关闭当前行号令的回显,也就是不显示履行的是什么号令,只显示号令的后果!
2.> 重定向符 将>之前的号令履行的后果输出到>之后指定的设备或文件中去,特定的文件或尺度输出(stdout--默许为系统掌握台),若文件中有数据则覆盖.
>> 重定向符
需求显示的数据追加到指定的输出文件之中,而不覆盖本来的内容.
< 输入重定向
将输入信息根源重定向为指定的设备或文件,系统默许接纳键盘输入.
>&将一个句柄的输出写入到另一个句柄的输入中
<&刚好和>&相反,从一个句柄读取输入并将其写入到另一个句柄输出中
常用句柄0、1、2,未定义句柄3-9
此中的1与2都是代表某个数据流输入输出的地址(NT CMD 称之为句柄,MSDOS称之为设备).
句柄0:尺度输入stdin,键盘输入
句柄1:尺度输出stdout,输出到号令提醒符窗口(console,代码为CON)
句柄2:尺度错误stderr,输出到号令提醒符窗口(console,代码为CON)
此中的stdin可被<重定向,stdout可被>、>>重定向,而stderr在DOS下不可直接重定向,只有通过ctty或别的号令将系统掌握权转交给别的设备的方法,来间接完成.
注意:假如用在 set /a 语句中,则>表示分组,>>表示逻辑移位.
Dos代码
@echo off
@rem echo 关闭号令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -利用该文件的名称作为标题
title 测试bat的文件(test.bat--重定向)
rem ===============重定向符>=====================
rem 将当前文件的内容输出到指定的文件tb.txt而非掌握台
type d:\test\bak\tt.txt>d:\test\bak\tb.txt
rem 将特定的字符串"Hello China "(注意最后的空格)写入到指定的文件
echo Hello China >d:\test\bak\tc.txt
rem ===============重定向符>>====================
echo hello>d:\test\bak\td.txt
echo world>>d:\test\bak\td.txt
rem ===============重定向符<=====================
rem 重新设定当前时间
echo 2010-01-12>d:\test\bak\te.txt
date <d:\test\bak\te.txt
del d:\test\bak\te.txt
rem ===============重定向符<=====================
rem 假如e盘存在则将其下面的文件信息输出到te.txt 不然将错误信息输出到err.txt
dir e:\ 1>d:\test\bak\te.txt 2>d:\test\bak\err.txt
@pause
3.| 号令管道符
管道号令,将|之前的号令的输出作为|之后的号令的输入.
格局:第一条号令 | 第二条号令 [| 第三条号令...]
Dos代码
@echo off
@rem echo 关闭号令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -利用该文件的名称作为标题
title 测试bat的文件(test.bat--管道号令)
rem =================管道号令|===================
rem 将显示tom001 tom002
rm d:\test\bak\t001.txt
echo tom001>d:\test\bak\t001.txt
echo neil001>>d:\test\bak\t001.txt
echo tom002>>d:\test\bak\t001.txt
echo neil002>>d:\test\bak\t001.txt
echo jerry>>d:\test\bak\t001.txt
type d:\test\bak\t001.txt | find "tom"
@pause
4.^ 转义字符
对特别标记"<",">","&"的前导字符,在号令中他将以上3个标记的特别功效去掉,仅仅把他们当作标记而不利用他们的特别意义.
别的,此转义字符还可以用作续行标记.
Dos代码
@echo off
@rem echo 关闭号令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -利用该文件的名称作为标题
title 测试bat的文件(test.bat--转义字符)
rem =================转义字符^==================
rem 用来转义 输出hello china > d:\test\bat\t.txt
echo hello china ^> d:\test\bat\t.txt
rem 用来续行行 输出后果为 hellochinaluchunli
echo hello^
china^
luchunli
@pause
5.& 组合号令
答应在一行中利用2个以上差别的号令,当第一个号令履行失利了,也不影响后边的号令履行.
语法:第一条号令 & 第二条号令 [& 第三条号令...]
&& 组合号令
用这种办法可以同时履行多条号令,当碰到履行出错的号令后将不履行背面的号令,假如一向没有出错则一向履行完好部号令
语法:第一条号令 && 第二条号令 [&& 第三条号令...]
这个号令和上边的近似,但辨别是,第一个号令失利时,后边的号令也不会履行.
|| 组合号令
用这种办法可以同时履行多条号令,当一条号令失利后才履行第二条号令,当碰到履行精确的号令后将不履行背面的号令,假如没有呈现精确的号令则一向履行完好部号令.
语法:第一条号令 || 第二条号令 [|| 第三条号令...]
提醒:组合号令和重定向号令一同利用必须注意优先级
管道号令的优先级高于重定向号令,重定向号令的优先级高于组合号令.
Dos代码
@echo off
@rem echo 关闭号令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -利用该文件的名称作为标题
title 测试bat的文件(test.bat--组合号令)
rem =================组合号令&==================
dir d:\test\aa & dir d:\test\all
rem k盘不存在 不影响号令履行
dir k:\ & dir d:\test\all
rem =================组合号令&&=================
rem k盘不存在 程序无法再履行
dir k:\ && dir d:\test\all
rem =================组合号令||=================
rem k盘不存在 履行错误 背面的dir才履行
dir k:\ || dir d:\test\all
rem ========结合利用组合号令和重定向号令========
dir c:\ & dir d:\ > d:\test\bak\t002.txt
rem 上述号令履行后果只有d盘下面的目录到t002.txt去了
rem c盘下面的目录并没有按照预想的输出,而是打印在了掌握台上
rem 改正成为,辨别举行输出
dir c:\ > d:\test\bak\t003.txt && dir d:\ >> d:\test\bak\t003.txt
@pause
6."" 双引号
双引号答应在字符串中包含空格.
cd "program files"
cd progra~1
cd pro*
以上三种办法都可以进入program files这个目录
7., 逗号
逗号相当于空格,在某些情形下","可以用来当作空格使.
如:dir,c:\
8.; 分号
当号令相同时,可以将差别目标用";"来断绝,但履行效果不变,如履行历程中发生错误,则返回错误报告.
如:dir c:\;d:\;e:\;f:\
Dos代码
@echo off
@rem echo 关闭号令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -利用该文件的名称作为标题
title 测试bat的文件(test.bat--分号)
rem ==============分号;=================
rem c d e f磁盘都存在,则精确履行,显示各磁盘下文件目录
dir c:\;d:\;e:\;f:\
echo ---------------------
rem z盘不存在则程序返回错误,关于d e f均不再履行
dir z:\;d:\;e:\;f:\
@pause
9.% 批处理变量指导符
表示参数,参数是指在运行批处理文件时在文件名后加的字符串.引用变量用%var%,调用程序外部参数用%1至%9等等.
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*为号令行传送给批处理的参数
%0 批处理文件本身,包含完好的途径和扩大名
%1 第一个参数
%9 第九个参数
%* 从第一个参数开始的全部参数
参数%0具有特别的功效,可以调用批处理自身,以到达批处理本身循环的目的,也可以复制文件自身等等.
%%批处理变量指导符.
set str=abc
echo 变量 str 的值为%str%
%也可以作为转义字符
echo %% 输出一个%
echo %%%% 输出两个%
Dos代码
@echo off
@rem echo 关闭号令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -利用该文件的名称作为标题
title 测试bat的文件(test.bat--变量指导符)
rem ==============变量指导符%===================
rem %0 代表当前文件本身 输出途径名和文件名
echo %0
rem 可以通过%0来拷贝自身(将当前文件的内容拷贝到tt.txt中去)
copy %0 d:\test\bak\tt.txt
rem 可以通过设置参数来承受输入的变量,但是不能有空格
rem 如:set param001 = %1则取不到任何后果,只能为set param001=%1
rem 批处理承受参数,如:test.bat tom is boy
set param001=%1
set param002=%2
set param003=%3
rem 输出 tom is boy
echo %param001% %param002% %param003%
rem %只能承受%1到%9九个参数,若参数多云9个则无法承受,需利用shift号令,见shift号令讲授
rem % 与 %%的用法
rem =两头不可有空格
set str=abc
echo str 的值是 %str%
rem 以下辨别输出一个% 两个% 三个%
echo %%
echo %%%%
echo %%%%%%
echo hello>d:\test\bak\t004.txt
echo china>>d:\test\bak\t004.txt
echo how>>d:\test\bak\t004.txt
echo are>>d:\test\bak\t004.txt
echo you>>d:\test\bak\t004.txt
rem 顺次输出hello china how are you
for /f %%i in (d:\test\bak\t004.txt) do echo %%i
rem 顺次输出a b c
for %%i in (a b c) do echo %%i
@pause
10.() 括号 小括号在批处理编程中有特别的作用,左右括号必须成对利用,括号中可以包含多行号令,这些号令将被当作一个整体,视为一条号令行.
括号在for语句和if语句中常见,用来嵌套利用循环或条件语句,其实括号()也可以单独利用.
注意:这种多条号令被视为一条号令行时,假如此中有变量,就触及到变量耽误的问题.
在for和if语句中属于语句格局的要求
比方:
for %%i in (语句1) do(语句2)
在这条语句中,语句1必须用括号对包抄,而语句2的括号对则可视情形予以丢弃或保存:假如语句2是单条语句或用&、&&、||等衔接标记衔接的多条语句,括号对可以丢弃,假如语句2是有逻辑先后关系的多条语句调集,则必须保存括号对,并且,多条语句必须断行书写.
if 条件 (语句1) else (语句2)
假如没有else部份,则语句1的括号对无关紧要;假若有else部份,则语句1中的括号对必须保存,此时,语句2中的括号对保存与否,和上一点近似.
Dos代码
@echo off
@rem echo 关闭号令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -利用该文件的名称作为标题
title 测试bat的文件(test.bat--括号)
rem ==================括号()====================
rem 输出1 2 3 每个单独占一行
echo 1 & echo 2 & echo 3
echo --------------
(
echo 1
echo 2
echo 3
)
@pause
11.! 感慨号
在变量耽误问题中,用来表示变量,即%var%应当表示为!var!,见setlocal介绍.
在set /a 一元运算符中表示逻辑非
12.: 冒号
任何故冒号:开首的字符行, 在批处理中都被视作标号, 而直接忽视后来的全部内容.
有效标号:冒号后紧跟一个以字母数字开首的字符串,goto语句可以辨认,表示该行是一个标签,它之后的内容是一个标签段.
如:test,则表示:test之下的内容是标签段,而test是这个标签段的名,可以用 goto test 、goto :test 跳转 到该标签段或用call :test 调用该子历程.
在 set 语句中:和~同时利用时,:起到截取字符串的功效.
假定 set str=abcde,那么,set var=%str:~0,1% 表示截取字符串abcde的第一个字符;
和=同时利用时,起到替换字符串的功效.
假定:set str=abc:de,那么,set var=%str:a=1% 表示把字符串abc:de中的a替换为1
无效标号:冒号后紧跟一个非字母数字的一个特别标记,goto无法辨认的标号,可以起到注释作用,所以 :: 常被用作注释标记,其实 :+ 也可起注释作用.
Dos代码
@echo off
@rem echo 关闭号令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -利用该文件的名称作为标题
title 测试bat的文件(test.bat--冒号)
rem ===================冒号:====================
rem 作为标签段
set num=3
set count=4
set /a flag=num+1
:: 关于判断相等若不加goto end则程序履行有问题
if %count%==%flag% goto begin
goto end
:begin
echo This is begin
:end
echo This is end
rem 截取/替换字符
set str=luchunli
set var001=%str:~2,7%
rem 输出 chunli
echo %var001%
set var002=%str:u=r%
rem 输出 lrchrnli
echo %var002%
@pause
13.:: 注释标记
表示该行内容为注释内容.:: 是个无效的标签名,:加上空格一样可以起到注释的作用.
::的功效和注释号令rem相同.
但是还有几点辨别
(1)::后的字符行在履行时不会回显, 无论能否用echo on翻开号令行回显状况.
(2)rem 注释语句中的某些号令标记如重定向标记和管道标记还是会履行,而假如用::来注释的时刻,与::同处一行的全部号令或标记直接被号令注释器忽视掉,无形中提高了注释的兼容性和整个程序的履行效率,并且在众多的号令语句中更显得夺目,所以,注释语句举荐利用::的格局.
(3)rem 可以用于 config.sys 文件中.
Dos代码
rem ==============注释号令标记::=================
rem 以下两句都不会履行
rem tt>d:\test\bak\t.txt
:: ttb>>d:\test\bak\t.txt
14.~
和冒号(:)一同利用时起到截取字符串的功效.
在set /a语句中时,它是一元运算符,表示将操作数按位取反.
比方,set /a num=~1的履行后果是-2,set /a num=~0的后果是-1
用在for语句中,表示加强for的功效,可以提取到更多的信息.
比方:在批处理文件的for语句中:%%~i表示去掉第一对外侧引号,%%~zi表示获得文件的大小(以字节为单位),%%~ni表示获得文件名,%%~xi表示获得扩大名(带点号)……它们可以组合利用,如%%~nxi表示获得文件名和后缀名.
15.+ - * /
在 set /a 语句中,这些标记的含义辨别为:加、减、乘、除.比方:set /a num=1+2-3*4/5.
需求注意的是,这些运算标记遵守数学运算中的优先级次序:先乘除后加减,有括号的先算括号,并且,直接忽视小数点,因此,方才那个算式的后果是1而不是0或0.6.
别的,有大概会在代码中看到这样的写法:set /a num+=1、set /a num-=1、set /a num*=1 和 set /a num/=1,这些表示累加、累减、累乘、累除,步长都是1,展开后的完好写法为:set /a num=num+1、set /a num=num-1、set /a num=num*1 和 set /a num=num/1(set /a 语句中,变量引用可以忽视百分号对或感慨号对,set /a num=%num%+1 与 set /a num=num+1 平等)
16.equ neq lss leq gtr geq
号令标记 含义 英文注释
EQU 等于 equal
NEQ 不等于 not equal
LSS 少于 less than
LEQ 少于或等于 less than or equal
GTR 大于 greater than
GEQ 大于或等于 greater than or equal
Dos代码
rem ==========equ neq lss leq gtr geq===========
set str001=tom
set str002=tom
rem equ 输出equal
if %str001% equ %str002% echo equal
17.点(.)和双点(..)
一个点代表当前目录;两个点代表上一级目录.
18.问号(?)
匹配肆意一个字符
在途径中代表肆意一个统配符
紧跟在/之后表示获得帮忙,如if /? 和 set /?
以上是“Windows中的批处理的常用标记介绍[Windows安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论