首页 > 编程知识 正文

bat处理实用命令,dos命令bat批处理

时间:2023-05-03 14:59:57 阅读:187036 作者:2144

常用命令

1、禁止命令回声

echo off表示在此语句之后执行的所有命令都不显示命令本身。 不包含输出结果。

与echo off类似,但附加在每个命令的开头,仅作用于当前命令,表示在运行时不显示此命令。

2、评论

rem用于注释。 rem全名remark (不确定)意味着评论。

3、输出信息

echo意味着显示此命令后面的字符。 它还可以用于将命令之后的字符串输出到文件,如下所示

echo abc to file targetfile.txt上的命令会将abc to fil写入targetfile.txt。

4、暂停

pause将暂停运行,在屏幕上显示Press any key to continue…提示,等待用户按任意键,然后继续。

5、结束脚本

exit/bcode /b选项表示结束当前批处理脚本,而不是cmd.exe,相当于函数的return语句。 code是数字,表示执行结果。

6、调用其他批处理

call用于调用另一个批处理,如函数调用。 如果不使用call直接调用另一个批处理文件,则在运行批处理文件后,将无法返回到当前文件中的后续命令。

在被调用的批处理中,%[1-9]表示传递的参数,参数是调用者在文件名后用空格分隔的字符串。 %0表示批处理命令本身,其他参数字符串由%1到%9表示

无参数调用样品的批处理

call for.bat firstparamvalue

7、输出文件内容

type用于输出文件的内容,以下命令输出subfor.bat文件的内容

type subfor.bat

8、定义变量

set用于定义变量。 例如set x=1

9、for循环

for循环遍历集合并执行指定的命令。 for%%variablein(set ) DO command [command-parameters]

%%variable指定一个字符可以替换的参数。 (替换为从收藏中取出的内容)

(set )指定文件或文件组。 可以使用通配符。 (集合)。

command指定要为每个文件执行的命令。

command-parameters指定特定命令的参数或命令行开关。

for循环遍历集合

set items=a b c d

set letters=x y z

for%%ain(%items% ) do (

for%%Bin(%Letters% ) do ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。

call subfor.bat %%a %%b

) )

) )

subfor.bat

@echo off

echo echo in subfor.bat : %1 %2

for循环处理通配符指定的一组文件

for%%ain(*.txt ) do (

如果rem文件名中有空格,则必须使用“”

rem type “%%a”

) )

for循环处理文件的内容

rem读取text.txt中的每一行作为参数%a的值,并调用循环体

for/f“delims=”% ain (text.txt ) do (

echo %%a

) )

数值范围迭代

格式: for/L%%Iin(start,step,end ) do cmd

for/l % % iin (1,1,5 ) do echo %%i

for循环命令的使用很复杂,请仔细阅读使用说明。

10、if语句

if语句有三种格式。

判断参数是否符合期望值: if [not]“参数”==“字符串”用于执行的命令

if %1==“abc 123”(

echofirstvar’value is : ABC 123

) else (

echofirstvar’valuenotexcepted,it is :%1

) )

确定文件是否存在: if [not] exist [路径文件名]用于运行的命令

if exist “abc 123.txt”(

echocontentoffileabc 123.txtis :

type “abc 123.txt "

) else (

echo abc 123.txt is exist。

) )

call subif.bat 3

按照错误级别执行命令

if errorlevel用于执行数字的命令

返回值必须按照从大到小的顺序排列。

if errorlevel 3(

echo errorlevel is three。

) else if errorlevel 2(

echo errorlevel is two .

) else if error第1级(

> echo errorlevel is one .
) else (
echo execute success .
)
subif.bat
@echo off
if “%1” == “” (
rem 加上/b选项表示退出当前批处理,而不是退出cmd.exe
exit /b 0
) else (
exit /b %1
)

11、goto 语句
goto语句可以结合标签进行跳转。
标签就是用冒号加单词定义,单独放在一行如: :labelName
@echo off
if “%1” == “” (
goto default
) else if “%1” == “helloworld” (
goto helloworld
)
:default
echo you come to default .
goto end
:hellowrold
echo why you come to hello world ?
goto end
:end

一个输出系统命令帮助文档的脚本
createHelp.bat 此脚本可以输出系统命令的帮助文档。
@echo off
set cmds=FIND SORT DISKPART
for /F “usebackq” %%i in (help) do (
for %%a in (%cmds%) do (
if not “%%a” == “%%i” (
help “%%i” > help/%%i-help.txt
)
)
)

一个文件处理的示例
以xml为例,增加字符串处理示例。config.xml文件:

< host>www.google.com.kh
< port>8080
< /config>
< /code>
dealContent.bat
@echo off
rem 把config.xml里的127.0.0.1替换成www.google.com.kh
if exist config_tmp.xml del config_tmp.xml
rem 使用for循环命令读取文件内容时,先从文件里读取一行,然后用默认的分隔符对行进行划分,再用得到的每一项调用循环体
rem 所以要处理的文件的行最好不要有空格或tab
for /F %%i in (config.xml) do (
rem 如果项是xml的标签,要对转义
if %%i == 127.0.0.1^> (
rem >>前面是没有空格
echo www.google.com.kh^>>> config_tmp.xml
) else (
echo %%i>> config_tmp.xml
)
)
del config.xml
ren config_tmp.xml config.xml

12、字符串处理
主要是字符串截取、替换,通过替换删除指定字符串:

字符串拼接
语法:newStr=%str1%%str2%
set str1=abc
set str2=123
set newStr=%str1%%str2%
echo %newStr%

字符串截取
语法:%var:~x,y% (x,y∈Z), 说明:
当x为正数时表示从左到右第x+1位开始截取,当x为负数时表示从右到左第x位开始截取(右一位是-1)
当省略x时采用默认值0;
当y为正数时表示截取的长度,当y为负数时表示截取到从右到左的第y+1位,当省略y时采用默认值-1。
set src=abc 123 456
set trunk=%src:~2,4%
echo %trunk%
echo %src:~-5,4%

字符串替换
语法:%var:str1=str2%
说明:将字符串var中所有的str1替换为str2
echo %src:123=789%
替换功能也可以用于完成删除操作,只需要替换为空就行了。
删除字符串里的空格
set str5=abc 123 4 5 6 7 8
echo %str5: =%
删除字符串里的tab
echo %str5: =%

13、特殊标记符:
CR(0D) 命令行结束符
Space(20) 空格,常用的参数界定符
Tab(09) 不常用的参数界定符

命令文件连接符

*, ? 文件通配符
“” 字符串界定符
^ 转义符,其后面的特殊字符按原样输出
| 命令管道符
, >> 文件重定向符
@ 命令行回显屏蔽符
/ 参数开关引导符
: 批处理标签引导符
% 批处理变量引导符

14、组合命令: &
Usage: 第一条命令 & 第二条命令 [& 第三条命令…]
同时执行多条命令,而不管命令是否执行成功。
&&
Usage: 第一条命令 && 第二条命令 [&& 第三条命令…]
同时执行多条命令,当碰到执行出错的命令将不执行后面的命令,如果一直没有出错则一直执行完所以命令。
||
Usage: 第一条命令 || 第二条命令 [|| 第三条命令…]
同时执行多条命令,当碰到执行正确的命令将不执行后面的命令,如果一直没有出现正确执行的命令则一直执行完所以命令。

15、| 管道命令
Usage: 第一条命令 | 第二条命令 [| 第三条命令…]
将第一条命令的结果作为第二条命令的参数来使用
sample: netstat -n -p tcp | find “49194”

16、重定向

, >>, 输出重定向命令
将一条命令或某个程序输出结果重定向到特定文件中。> 与 >> 的区别在于:
会清除原有文件中的内容后写入指定文件,

只会追加内容到指定文件中,而不会改变其中的内容。
<, >&, <&
< 从文件中而不是键盘中读入命令输入。
& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读入输入并将其写入到另一个句柄输出中。

17、set 命令进阶 说明
set [[/a [expression]] [/p [variable=]] string]
参数说明
/a : 将string设置成可求值的数字表达式
/p : 将variable的值设置成输入行
variable : 指定需要设置或修改的变量
string : 指定要与变量关联的字符串
/? : 在命令提示符显示帮助

18、数字表达式求值(使用/a)
rem set /a expression, set的/a参数就是让set可以支持数学符号进行数学运算,数值默认是10进制,前缀0x表示十六进制,0表示八进制数字。
按优先级从高到低:
运算符 执行的操作
() 分组
±*/% 算法
<< >> 逻辑移位
& | ^ 位运算

+= -= *= /= %= &= ^= |= <<= >>= 赋值
, 表达式分隔符
如果使用逻辑(&|)或模(%)运算符,要用引号将表达式字符串引起来。表达式中的非数字字符串将被视为环境变量名
(运行对环境变量进行算术运算,而不需要使用%),其值将被转化成数字然后进行处理。如果指定的当前环境中
没有定义的环境变量名,将会分配零值。

19、提供交互界面(使用/p)
set /p var=请输入变量的值:
echo %var%

20、变量增强
用 if [not] defined variable 可以判断变量是否有内容

21、环境变量
如果没有任何参数,set命令将显示当前环境变量
当指定变量和字符串的值时,指定的变量值将被添加到该环境,而且该字符串与该变量关联。如果环境中已存在该变量,新的字符串值将替代旧的字符串值。
如果只为set命令指定一个变量和一个等号(没有字符串),则与该变量关联的字符串值将被消除(就像变量根本不存在一样)

22、延迟环境变量说明与启用
延迟环境变量扩展的功能,即变量延迟解析功能。此功能默认是停用的,可以谈过cmd.exe /V 或
setlocal EnableDelayedExpansion来开启。使用延迟变量时需要用”!”括起。

23、动态环境变量
变量 说明
%CD% 扩充为当前目录(current directory)
%DATE% 扩充为当前日期
%TIME% 扩充为当前时间
%RANDOM% 扩充为0到32767的随机数
%ERRORLEVEL% 扩充为当前命令处理器命令扩展版本号
%CMDCMDLINE% 扩充为调用命令处理器的原始命令行,即控制台路径

24、变量增强(文件名路径处理)
变量 说明
%~I 扩充%I为删除外围"引号(有就删)
%~fI 扩充%I为一个完整的路径
%~dI 仅扩充%I为一个驱动器号
%~pI 仅扩充%I为一个路径
%~nI 仅扩充%I为一个文件名
%~xI 仅扩充%I为一个文件扩展名
%~sI 扩充%I为完整的短命路径
%~aI 扩充为文件的属性(arsh)
%~$PATH:I 变量可以是其他的,如:windDir、programfiles等在环境变量PATH指定的路径总搜索文件,扩充%I为找到的第一个文件的完整路径;若未找到文件,则扩充%I为空。
组合扩展参数效果:
%~dpI: 仅扩充%I为驱动器号和路径
%~nxI: 仅扩充%I为文件名加扩展名
%~fsI: 扩充%I为完整的短名路径(%~sI)

25、用批处理调用yuicompressor压缩js、css的脚本
@echo off
setlocal enabledelayedexpansion
set pwd=%CD%
set srcDir=%pwd%testcompress
set dstDir=%pwd%testcompressres
del /F /Q /S %dstDir%*
for /R %srcDir% %%D in (*) do (
set pth=%%~dpD
set pth=!pth:%srcDir%=%dstDir%!
set fname=%%~nD
set ext=%%~xD
if not exist !pth! mkdir !pth!
set dst=!pth!!fname!!ext!
if /I “!ext!” == “.css” (
java -jar yuicompressor-2.4.7buildyuicompressor-2.4.7.jar --charset utf8 --type css -o !dst! %%D
) else if “!ext!” == “.js” (
java -jar yuicompressor-2.4.7buildyuicompressor-2.4.7.jar --charset utf8 --type js -o !dst! %%D
)

)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。