1 参数 | 参数变量:直接接收用户附于批处理程序后的字串,并将各字串自动代入相应的变量。 |
%0-%9;%0代表批处理文件本身,此后顺推;%0自动默认为批处理文件名,不需要任何传递或赋值操作; | |
2 变量赋值 | set varname=varvalue |
变量的表达式赋值:set /a ver=100+1 | |
3 与用户交互的变量 | set /p varname="remark" |
4 替换变量值 | %varname%:表示引用变量; |
5 迭代变量 | %a-%z或%A-%Z;只存在于for循环的上下文件中,首先定义的是其初始值; |
变量的清除或释放: | set ver= |
变量作用范围局部化 | setlocal |
1 定义的变量退出cmd时这些变量将不复存在; | |
2 可设置变量的作用范围局限在某个特定的区域; | |
环境变量 | path,homedrive,computername,errorlevel(追踪最近使用命令的退出代码); |
变量扩充 | 2 变量要用%x来表示,x可取a-z,A-Z,0-9; |
%a-z或%A-Z是for语句中的迭代变量;(脚本的for命令处理的对象是文件集\目录集\或文本文件、命令输出的以行为基础的文本; | |
%0-9是批处理脚本的参数; | |
%~dI 仅将 %I 扩展到一个驱动器号 | |
%~pI 仅将 %I 扩展到一个路径 | |
echo %~dp0 显示当前批处理文件的路径; | |
变量延迟 | 使用变量时是用&,当延迟变量时,用!代替&; |
!是%的一个强化版,在for循环中,当一个变量被多次赋值时,%dd%所获取的仅仅是dd第一次被赋予的值,想要刷新dd的值,就必须首先使用命令setlocal enabledelayedexpansion来开启延时变量开关,然后用!dd!来获取dd的值; |
将指定的变量%I进行扩展(~,为扩展符号,它与不同的字母结合所代表的含义不同) | |
%0 | 代表批处理文件自身 |
%~I | 删除任何引号("),扩展 %I |
%~fI | 将 %I 扩展到一个完全合格的路径名 |
%~dI | 仅将 %I 扩展到一个驱动器号 |
%~pI | 仅将 %I 扩展到一个路径 |
%~nI | 仅将 %I 扩展到一个文件名 |
%~xI | 仅将 %I 扩展到一个文件扩展名 |
%~sI | 扩展的路径只含有短名 |
%~aI | 将 %I 扩展到文件的文件属性 |
%~tI | 将 %I 扩展到文件的日期/时间 |
%~zI | 将 %I 扩展到文件的大小 |
%~$PATH:I | 查找列在路径环境变量的目录,并将 %I 扩展到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串 |
可以组合修饰符来得到多重结果: | |
%~dpI | 仅将 %I 扩展到一个驱动器号和路径 |
%~nxI | 仅将 %I 扩展到一个文件名和扩展名 |
%~fsI | 仅将 %I 扩展到一个带有短名的完整路径名 |
%~dp$PATH:I | 搜索列在路径环境变量的目录,并将 %I 扩展到找到的第一个驱动器号和路径。 |
%~ftzaI | 将 %I 扩展到类似输出线路的 DIR |
在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆。 | |
echo %~dp0 | 显示当前批处理文件的路径; |
%%variable | 在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable |
定义变量 | set extension=.rar |
for /l %%n in (0,1,9) do ( | |
set /a sum=0 rem定义一个数值型变量"sum",并将其值设为“0”; | |
set [[/a [expression]][/p [variable=]] string] | |
变量引用 | % and ! |
1 参数 参数变量:直接接收用户附于批处理程序后的字串,并将各字串自动代入相应的变量。
%0-%9; %0代表批处理文件本身,此后顺推;
2 环境变量
path,homedrive,computername,errorlevel(追踪最近使用命令的退出代码);
2 变量赋值
set varname=varvalue
变量的表达式赋值:
set /a ver=100+1
set 自定义变量;
set 暂时修改预定义的环境变量;
setx 永久修改预定义的环境变量;
3 与用户交互的变量
set /p varname="remark"
4 替换变量值
%varname%:表示引用变量;
5 迭代变量
%a-%z或%A-%Z;只存在于for循环的上下文件中,首先定义的是其初始值;
系统变量的检查:
1 win+r %systemroot%
2 cmd echo %computername% echo %username%
errorlevel:可以追踪最近使用命令的退出代码。
1 如果命令正常执行,则错误级别为0;
2 如果命令执行过程中出错,则错误级别会被设置为一个适当的非0值;
1代表通常的错误;
2 代表执行错误,意味着命令没有正确执行;
-2代表算数错误,比如创建了一个命令shell无法处理的过大的数值;
变量的清除或释放:
set ver=
变量作用范围局部化
1 定义的变量退出cmd时这些变量将不复存在;
2 可设置变量的作用范围局限在某个特定的区域;
setlocal