从var %% i中读取第一个字符用于迭代

时间:2013-08-08 12:30:12

标签: shell batch-file

我希望从for迭代中的变量访问第一个char。

这是我的代码:

for /f "tokens=1,2 delims==" %%i in (temp.csv) do (

    set vari = %i% rem >> vari
    echo %vari:~0,1%
)

最后一个echo只写“%”而不是变量的第一个字符。如果我写:

echo %vari:~0,2%

它写的是%% i中的整个字符串。

所以我的问题是:如何从%% i变量中获取第一个字符?

感谢

2 个答案:

答案 0 :(得分: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
)

答案 1 :(得分:0)

for /f "tokens=1,2 delims==" %%i in (temp.csv) do (
    set "vari=%%i"
    call echo %%vari:~0,1%%
)