1.作用:显示、设置或删除 cmd.exe 环境变量。
SET [variable=[string]]
variable 指定环境变量名。 string 指定要指派给变量的一系列字符串。
#基础用法
set #显示目前所有可用的变量,包括系统变量和自定义的变量
echo %SystemDrive% #显示系统盘盘符。系统变量可以直接引用
set p #显示所有以p开头的变量,要是一个也没有的话就设errorlevel=1
set p=qwerdfzxc #设置变量p,并赋值为 = 后面的字符串,即qwerdfzxc
#变量的引用及赋值
echo %p% #显示变量p代表的字符串,即qwerdfzxc
echo %p:~3% #显示变量p中第3个字符以后的所有字符,即rdfzxc
echo %p:~3,3% #显示第3个字符以后的3个字符,即rdf
echo %p:~0,3% #显示前3个字符,即qwe
echo %p:~-2% #显示最后面的2个字符,即xc
echo %p:~0,-2% #显示除了最后2个字符以外的其它字符,即qwerdfz
echo %p:q=aa% #用c替换变量p中所有的q,即显示aawerdfz
echo %p:q=% #将变量p中的所有q字符串置换为空,即显示werdfzxc
echo %p:*we=c% #第一个bb及其之前的所有字符被替换为c,即显示crdfzxc
set p=%p:*q=c% #设置变量p,赋值为 %p:*q=c% ,即cwerdfzxc
set /a p=39 #设置p为数值型变量,值为39
set /a p=39/10 #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3set /a p=p/10
#用 /a 参数时,在 = 后面的变量可以不加%直接引用set /a p="1&0"
#"与"运算,要加引号。其它支持的运算符参见set/?
set p= #取消p变量
set /p p= #请输入屏幕上显示"请输入",并会将输入的字符串赋值给变量p注意这条可以用来取代 choice 命令
2.常见变量
%CD% #代表当前目录的字符串
%DATE% #当前日期
%TIME% #当前时间
%RANDOM% #随机整数,介于0~32767
%ERRORLEVEL% #当前ERRORLEVEL 值
%CMDEXTVERSION% #当前命令处理器扩展名版本号
%CMDCMDLINE% #调用命令处理器的原始命令行可以用echo命令查看每个变量值,如 echo %time%
%CD% #代表当前目录的字符串
%DATE% #当前日期
%TIME% #当前时间
%RANDOM% #随机整数,介于0~32767
%ERRORLEVEL% #当前ERRORLEVEL 值
%CMDEXTVERSION% #当前命令处理器扩展名版本号
%CMDCMDLINE% #调用命令处理器的原始命令行可以用echo命令查看每个变量值,如 echo %time%
注意 %time%精确到毫秒,在批处理需要延时处理时可以用到
3.在 SET 命令中添加了两个新命令行开关:
SET 命令不允许变量名含有等号。
SET /A expression
SET /P variable=[promptString]
SET 命令不允许变量名含有等号。
SET /A expression
SET /P variable=[promptString]
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:
评估器很简单并以递减的优先权顺序支持下列操作:
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
& - 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符
/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入
行之前,显示指定的 promptString。promptString 可以是空的。
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
& - 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符
/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入
行之前,显示指定的 promptString。promptString 可以是空的。