0

如何设置%%~nm变量的值。[ie] 当我尝试将其设置为喜欢Set "var=%%~nm"并回%var%显 .Output 给出空字符串 时,对于所有具有 .Output 的值,我都面临这个问题~。请提供解决方案。

4

2 回答 2

2

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

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

:doit
set "var=%~1"
echo %var%
goto:eof
于 2013-07-04T16:03:04.500 回答
0

echo %var%for在循环外使用时应该可以正常工作。当您想在循环内回显变量时for,您必须启用延迟扩展并使用!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",这显然是不相等的。

于 2013-07-04T14:07:07.887 回答