Shell 读取用于迭代的var%%i的第一个字符
我想访问for迭代中变量的第一个字符 这是我的密码:Shell 读取用于迭代的var%%i的第一个字符,shell,batch-file,Shell,Batch File,我想访问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 /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
)
空格在批处理中很重要,请避免在等号之前或之后使用。
代码中的第二个问题是,在解析块时扩展百分比,而不是在执行块时扩展百分比。
参数的扩展不像
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(
设置“变量=%%i”
呼叫echo%%vari:~0,1%%
)
对于/f“令牌=1,2 delims==”%(临时csv)中的%%i do(
设置“变量=%%i”
呼叫echo%%vari:~0,1%%
)
我只是尝试一下你的代码,在调用echo时只写:“:~0,1”。我尝试这样做:setlocal DisableDelayedExpansion for/f”tokens=1,2 delims==“%%I in(temp.csv)do(set vari=%I%setlocal EnableDelayedExpansion echo%%I echo%vari%echo%vari%echo%vari:~0,1%endlocal)和它的写入(例如):命令echo desactiveé~0,1我刚刚复制了您的行设置变量=%i%
。但现在我将其更正为%%I
我只是尝试一下你的代码,它只写::~0,1”当调用echo时。我尝试这样做:setlocal DisableDelayedExpansion for/f“tokens=1,2 delims==”%%I in(temp.csv)do(set vari=%I%setlocal EnableDelayedExpansion echo%%echo%vari%echo%echo%vari:~0,1%endlocal)并且它是写的(例如):命令ECHO desactiveé~0,1我刚刚复制了您的行set vari=%i%
。但现在我将其更正为%%i