我想从 for 迭代中的变量访问第一个字符。
这是我的代码:
for /f "tokens=1,2 delims==" %%i in (temp.csv) do (
set vari = %i% rem >> vari
echo %vari:~0,1%
)
最后一个回显只写“%”而不是变量的第一个字符。如果我写:
echo %vari:~0,2%
它写入 %%i 中的整个字符串。
所以我的问题是:如何从 %%i 变量中获取第一个字符?
谢谢
我想从 for 迭代中的变量访问第一个字符。
这是我的代码:
for /f "tokens=1,2 delims==" %%i in (temp.csv) do (
set vari = %i% rem >> vari
echo %vari:~0,1%
)
最后一个回显只写“%”而不是变量的第一个字符。如果我写:
echo %vari:~0,2%
它写入 %%i 中的整个字符串。
所以我的问题是:如何从 %%i 变量中获取第一个字符?
谢谢
空格在批处理中很重要,避免在等号之前或之后使用它们。
代码中的第二个问题是百分比扩展在解析块时展开,而不是在执行时展开。
并且参数的扩展不像set vari=%i%
,而是你需要使用set vari=%%i
因此,在这种情况下,您需要对变量进行延迟扩展。
setlocal DisableDelayedExpansion
for /f "tokens=1,2 delims==" %%i in (temp.csv) do (
set "vari=%%i"
setlocal EnableDelayedExpansion
echo !vari:~0,1!
endlocal
)
for /f "tokens=1,2 delims==" %%i in (temp.csv) do (
set "vari=%%i"
call echo %%vari:~0,1%%
)