1、SET:: 键入不带参数的 SET,显示目前所有可用的变量,包括系统变量和自定义的变量。
2、SET P :: 显示所有以字母 P 打头的变量。
E:\Workspace\SourceCode\bat>set P
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=3c03
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
...
3、SET [variable=[string]] ::variable 指定环境变量名; string 指定要指派给变量的一系列字符串。
set PATH=str1var1str2var2
echo 所有字符:%PATH%
echo 显示前4个字符: %PATH:~0,4%
echo 显示第4个字符后面所有的字符: %PATH:~4%
echo 显示第5个至第8个字符字符: %PATH:~4,4%
echo 显示最后4个字符: %PATH:~-4%
echo 显示除最后4个字符外所有的字符: %PATH:~0,-4%
echo 用test代替变量中所有的str: %PATH:str=test%
echo 删除所有的str: %PATH:str=%
echo 第1个var和其之前所有的字符替换为test:%PATH:*var=test%
执行结果:
所有字符: str1var1str2var2
显示前4个字符: str1
显示第4个字符后面所有的字符: var1str2var2
显示第5个至第8个字符字符: var1
显示最后4个字符: var2
显示除最后4个字符外所有的字符: str1var1str2
用test代替变量中所有的str: test1var1test2var2
删除所有的str: 1var12var2
第1个var和其之前所有的字符替换为test:test1str2var2
4、SET /A expression ::指定等号右边的字符串为数字表达式。
set /a var=123
echo %var%
set /a var=var/10
echo %var%
set var=var/10
echo %var%
执行结果:
123
12
var/10
5、SET /P variable=[promptString] ::显示指定的 promptString提示用户输入,输入的字符串赋值给variable;promptString 可以是空的。
set /p var=请输入一个数字:
echo %var%
执行结果:
请输入一个数字:12
12
6、set p= ::取消变量p。
set p=123
if defined p echo p变量已经定义
set p=
if defined p (echo p变量已经定义) else echo p变量取消了定义
执行结果:
p变量已经定义
p变量取消了定义
7、变量在 if 和 for 的复合语句里是一次性全部替换的,如果需要在if和for复合语句中更新变量,可以延通过迟环境变量扩充启用,在执行期间 用!代替%。
@echo off
set "VAR=before1"
if "%VAR%"=="before1" (
echo %VAR%
set VAR=after1
echo %VAR%
if "%VAR%"=="after1" echo if you see this, it worked!
)
echo ---------------------------
set "VAR=before2"
if "%VAR%"=="before2" (
echo %VAR%
set VAR=after2
echo !VAR!
if "!VAR!"=="after2" echo if you see this, it worked!
)
echo ---------------------------
::延迟环境变量扩充启用
setlocal enabledelayedexpansion
echo 延迟环境变量扩充启用
set "VAR=before3"
if "%VAR%"=="before3" (
echo %VAR%
set VAR=after3
echo !VAR!
if "!VAR!"=="after3" echo if you see this, it worked!
)
执行结果:
before1
before1
---------------------------
before2
!VAR!
---------------------------
延迟环境变量扩充启用
before3
after3
if you see this, it worked