SET命令扩展子串

时间:2014-09-19 17:29:48

标签: windows batch-file command set prompt

在命令提示符下使用SET命令时,%和!意思是,例如

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%

注意%i和!VAR是怎样的!这是什么意思,%i不能成为一个变量吧?因为变量写得像%variable%。

这些是什么想法? (*)也只是文字吗?

问候,S

1 个答案:

答案 0 :(得分:0)

在正常情况下,您可以通过将其名称括在%

来访问变量值
set var=a
echo %var%

当有&的命令组合或括号中放入一些命令时,set将在所有命令执行后生效。然后need delayed expansion to access your variable并附上它与!

setlocal enableDelayedExpansion
if exist c:\ (
  set var2=a
  echo !var2!

)

仔细查看SET命令。

在for循环中,你有一个特殊的变量只能在for命令的上下文中运行 - 一个在循环的每次迭代中改变其值的标记:

for /f "delims=" %%# in ('set') do echo %%# 

here are the letters that you can use as tokens。请注意 - 您需要在脚本和命令提示符中使用双%

还有一种类型的变量只在开头有% - 传递给脚本(或子程序)的参数 - 可以用数字(或数字)来访问 - 从%0到{ {1}}其中%9 是脚本本身的名称。