~~~~~~~~ 因为想要面对一个新的开始,一个人必须有梦想、有希望、有对未来的憧憬。如果没有这些,就不叫新的开始,而叫逃亡。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ————玛丽亚·杜埃尼亚斯
前言
批处理文件是将一系列命令按照一定的顺序集合为一个可执行的文本文件,其扩展名为bat或者cmd,那么这些命令就被统称为批处理命令。
小技巧:ctrl+c组合键可以强行终止一个批处理的执行过程。
常用命令
rem和::和%内容% #注释,rem会回显,::不回显。:后面非字母数字的一个特殊符号都可以起注释作用。
echo和@ #@字符放在命令前面将关闭该命令回显。echo off/on 关闭打开回显。echo 输出信息内容
pause #暂停
errorlevel #程序返回码。echo%errorlevel%可以查看上一条命令状态,0为成功,1为失败
title #设置cmd窗口标题
color #设置控制台颜色,第一个为背景,第二个为前景。具体查看cmd帮助 color /?
mode #配置系统设备
goto和: #跳转,跳转到:后面的内容
find #文件中搜索字符串,具体查看帮助 find /?
start #调用外部程序命令
assoc #设置文件扩展名关联,关联到文件类型
ftype #设置文件类型关联,关联到执行程序和参数
pushd和popd #切换和恢复目录
call #调用另一个批处理,另一个执行完再返回
shift #更改批处理文件中可替换参数的位置
if #条件判断语句
for #循环语句。for/参数 %变量 in(集)命令 。参数:/d 指定目录 /r 指定盘符 /l 次数 /f打开集
setlocal enabledelayedexpansion #动态赋值
attrib #显示或更改文件属性
常用特殊符号
@ 命令行回显屏蔽符
% 批处理变量引导符
>重定向符
>>追加重定向符
<、>&、<& 重定向符
| 命令管道符
^ 转义字符
& 组合命令,出错不影响后面命令执行
&& 组合命令,出错后面命令不执行
|| 组合命令
"" 字符串界定符
, 逗号
; 分号
() 括号
! 感叹号
程序实例
多个整数相加的子程序
子程序一般放在最后,并且注意在主程序最后要加上exit或跳转语句,避免错误的进入子过程。
子程序和主程序中的变量都是全局变量,其作用范围都是整个批处理程序。
@echo off
set sum=0
call :sub 10 20 35 40 50
echo 数据求和结果:%sum%
pause
goto :eof
:sub
rem 参数1为返回变量名称
set /a sum+=%1
shift /1
if not "%1"=="" goto sub
:eof
程序执行结果如图
随机数的生成(%random%)
%RANDOM% 系统变量 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。2的15次方等于32768,上面的0~32767实际就是15位二进制数的范围。由此我们可以利用系统变量%random%,求余运算%%,字符串处理等实现随机处理。简单代码如下:
@echo off
setlocal enabledelayedexpansion
:num
echo 请输入随机数的位数
set/p "n=>"
if %n%==1 goto n1
if %n%==2 goto n2
if %n%==3 goto n3
if %n%==4 goto n4
echo 输入错误,请重新输入!
goto num
:n1
for %%i in (1) do (
set /a randomNum=!random!%%10
echo 随机数:!randomNum!
goto num
)
:n2
for %%i in (1) do (
set /a randomNum=!random!%%100
echo 随机数:!randomNum!
goto num
)
:n3
for %%i in (1) do (
set /a randomNum=!random!%%1000
echo 随机数:!randomNum!
goto num
)
:n4
for %%i in (1) do (
set /a randomNum=!random!%%10000
echo 随机数:!randomNum!
)
pause
goto num
或者这个代码
@echo off
setlocal enabledelayedexpansion
:num
echo 请输入随机数的位数
set/p "n=>"
if %n% gtr 4 (
echo 输入错误,请重新输入!
goto num
)
if %n%==1 (
set number=10
)
if %n%==2 (
set number=100
)
if %n%==3 (
set number=1000
)
if %n%==4 (
set number=10000
)
for %%i in (1) do (
set /a randomNum=!random!%%!number!
echo 随机数:!randomNum!
goto num
)
pause
goto num
执行结果
产生指定区间的随机值
通用的公式%random%%%(end-start+1)+start来产生[start,end]区间里的随机数,
REM 产生指定数字之间的随机数(5个)
@echo off
setlocal enabledelayedexpansion
@REM 设置随机数的最小和最大值以及求模用的变量
echo 请输入起始值:
set/p "start=>"
echo 请输入结束值:
set/p "end=>"
set /a mod=!end!-!start!+1
for /l %%i in (1,1,5) do (
REM 产生[start,end]之间的随机数
set /a r=!random!%%!mod!+!start!
echo.
echo 第%%i个随机值:!r!)
pause
运行结果如下