1

我想从 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 变量中获取第一个字符?

谢谢

4

2 回答 2

1

空格在批处理中很重要,避免在等号之前或之后使用它们。
代码中的第二个问题是百分比扩展在解析块时展开,而不是在执行时展开。
并且参数的扩展不像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
)
于 2013-08-08T13:03:32.117 回答
0
for /f "tokens=1,2 delims==" %%i in (temp.csv) do (
    set "vari=%%i"
    call echo %%vari:~0,1%%
)
于 2013-08-08T14:46:46.360 回答