在批处理文件中设置变量中的值

时间:2013-07-04 13:59:25

标签: windows for-loop batch-file cmd

如何将%%~nm的值设置为变量。 [ie]当我尝试将其设置为Set "var=%%~nm"和echo %var% .Output正在提供空字符串 对于具有~的所有值,我都面临此问题。 请提供解决方案。

2 个答案:

答案 0 :(得分:2)

试试这个(新的变量不能在没有delayed expansion的同一个for循环中使用:

for %%m in (*) do call:doit "%%~nm"
goto:eof

:doit
set "var=%~1"
echo %var%
goto:eof

答案 1 :(得分:0)

echo %var%循环之外使用时,

for应该可以正常工作。如果要在for循环内回显变量,则必须启用delayed expansion并使用!var!(变量在运行时展开)而不是%var%(变量已扩展)在分析时间):

@echo off

setlocal EnableDelayedExpansion

for %%m in (*) do (
  set "var=%%~nm"
  echo !var!
)

echo %var%

endlocal

如果要将变量与字符串进行比较,则必须将两者都放在引号之间或者不包括:

if %var%==string ...

if "%var%"=="string" ...

否则你会比较string=="string",这显然是不相等的。