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