Windows批处理:命令set

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

你可能感兴趣的:(Windows批处理技巧)