如何将%%~nm
的值设置为变量。
[ie]当我尝试将其设置为Set "var=%%~nm"
和echo %var%
.Output正在提供空字符串
对于具有~
的所有值,我都面临此问题。
请提供解决方案。
答案 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"
,这显然是不相等的。