bat批处理 set命令

set 功能一览
[设置变量]
格式: set 变量名=变量值  

  set 变量名=%变量名%
详细:  被设定的变量以%变量名%引用

[取消变量]
格式: set 变量名=
详细: 取消后的变量若被引用%变量名%将为空

[展示变量]
格式: set 变量名
详细: 展示以变量名开头的所有变量的值

[列出所有可用的变量]
格式: set


[计算器]
格式: set  /a 表达式
示例: set /a 1+2*3  

输出 7

[设置变量为表达式计算后的值]
set a=1+2
echo %a%

输出1+2


set /a a=1+2
echo %a%

输出 3


[设置变量为用户输入的值]
set /p a=

此时需要用户输入的值
echo %a% 

显示用户输入的值

注意
set不能用在复合语句里面比如if 1==1 set a=2或者for %%i in (a) do set a=2


预定义的变量
下面是些已经被底层定义好可以直接使用的变量(不会出现在 SET 显示的变量列表中)
%CD% - 扩展到当前目录字符串.
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期.
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间.
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字.
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值.
%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号.
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行.
%0 - bat的完整路径名如"d:\temp\xxx.bat"
%1 - bat参数1依次类推%2参数2...
%path% - 当前的环境变量. 以分号隔开的路径列表, 路径可包含空格, 可以以'\'结尾, 可以以双引号包围之.


扩展变量

与%i相关的变量(bat参数或者for循环的%i)
假设文件为d:\temp\ParseSinglePkgs.bat
%0        d:\temp\ParseSinglePkgs.bat
%~dp0  d:\temp\
%cd%   d:\temp\
%~nx0   ParseSinglePkgs.bat
%~n0     ParseSinglePkgs
%~x0     .bat

与%VAR%相关的变量
%VAR:str1=str2%    会将VAR中的str1替换为str2

echo %abcdc:c=ko%  结果是 abkodko

str2 如果为空则可以达到删除的效果, str1 前可以加*

变量%abcde:*d=% 结果是 e

%VAR:~0,-2%          会提取VAR 变量的所有字符, 除了最后两个
%VAR:~2%              会提取VAR 变量的除前两个的所有字符
%VAR:~-2%             会提取VAR 变量的最后两个
%VAR:~2,5%           提取从第2个字符开始的5个字符



你可能感兴趣的:(Windows,Development)