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

Windows 在批处理文件中的变量中设置值,windows,for-loop,batch-file,cmd,Windows,For Loop,Batch File,Cmd,如何将%%~nm的值设置为变量。 [ie]当我尝试将其设置为set“var=%%~nm”和echo%var%时,输出是空字符串 对于所有具有~的值,我都面临这个问题。 请提供解决方案。echo%var%在for循环的外部使用时,应该可以正常工作。如果要在for循环中回显变量,必须启用并使用!瓦尔(变量在运行时展开),而不是%var%(变量在解析时展开): 如果要将变量与字符串进行比较,必须在引号之间加上或不加引号: if %var%==string ... 或 否则您将比较string==“s

如何将
%%~nm
的值设置为变量。 [ie]当我尝试将其设置为
set“var=%%~nm”
和echo
%var%
时,输出是空字符串 对于所有具有
~
的值,我都面临这个问题。
请提供解决方案。

echo%var%
for
循环的
外部使用时,应该可以正常工作。如果要在
for
循环中回显变量,必须启用并使用
!瓦尔(变量在运行时展开),而不是
%var%
(变量在解析时展开):

如果要将变量与字符串进行比较,必须在引号之间加上或不加引号:

if %var%==string ...

否则您将比较
string==“string”
,它们显然不相等。

试试这个(如果没有
延迟扩展,新变量不能在同一for循环中使用:

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

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

我想使用!var!的值作为例如:If!var!='Name'Echo Name else Echo'Number.的Comaprion的值。如果我使用!var.,我将无法在If statemtn中执行Comaprion。很抱歉,这是我的Dos新手脚本,请参阅更新的答案。如果这没有帮助,请使用实际代码更新您的问题。这与Dos无关,顺便说一句@Echo off setl%%m in(*)do的本地启用延迟扩展(设置“var=%%~nm”If“!var!”==“Name”echo!var!)endlocal。当我这样比较时,这不起作用,我想在fforr LLOOOP中进行比较。仅“它不起作用”是一个不充分的问题描述。请使用实际代码、示例输入和预期输出更新您的问题。
if "%var%"=="string" ...
for %%m in (*) do call:doit "%%~nm"
goto:eof

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