Loops 如何在%%x(for)批处理文件中执行此操作%x:~0,1%

Loops 如何在%%x(for)批处理文件中执行此操作%x:~0,1%,loops,for-loop,batch-file,cmd,Loops,For Loop,Batch File,Cmd,我的%%x是 a=23 b=56 c=89 在名为hi.txt for %%x in (hi.txt) do (echo %%x:~0,1 %%x) 但它失败了 多谢各位 我想回显每行中的“第一个字符”,但我不能使用%%x:~0,1…我不太清楚您想做什么。。。我假设您想要解析hi.txt文件,并提取变量(a、b、c)和它们等于的数字 @echo off setlocal ENABLEEXTENSIONS for /f "tokens=1,2 delims==" %%i in (hi.txt

我的
%%x

a=23
b=56
c=89
在名为
hi.txt

for %%x in (hi.txt) do (echo %%x:~0,1 %%x)
但它失败了

多谢各位


我想回显每行中的“第一个字符”,但我不能使用%%x:~0,1…

我不太清楚您想做什么。。。我假设您想要解析hi.txt文件,并提取变量(a、b、c)和它们等于的数字

@echo off setlocal ENABLEEXTENSIONS for /f "tokens=1,2 delims==" %%i in (hi.txt) do ( echo %%i has value %%j ) @回音 setLocalEnableExtensions 对于(hi.txt)do中的/f“tokens=1,2 delims==”%%i( echo%%i有值%%j ) 这将输出

a has value 23 b has value 56 c has value 89 a的值为23 b的值为56 c值89 如果需要更多信息,请参阅“帮助”

另外请注意,我的示例是在=符号上进行解析,因此每个变量的宽度无关紧要。你可以有一个像“MyText=100”这样的行,它也可以工作。~0,1假设每个值只有1个字符宽


我希望这会有所帮助。

如果您只需要打印行的第一个字符,那么下面的脚本应该可以工作。我相信您最初的问题可能与延迟变量扩展有关。有关更多信息,请参阅“帮助设置本地”和“帮助设置”

这个版本的脚本将每一行读入一个临时变量,并将第一个字符剪切到另一个名为firstCharacter的变量中。这个用于CMD脚本的延迟变量扩展功能

@echo off setlocal ENABLEEXTENSIONS,ENABLEDELAYEDEXPANSION for /f %%i in (hi.txt) do ( set wholeLine=%%i set firstCharacter=!wholeLine:~0,1! echo First Character is !firstCharacter! ) endlocal @回音 setlocal ENABLEEXTENSIONS,ENABLEDELAYEDEXPANSION 对于/f%%i in(hi.txt)do( 设置整行=%%i 设置firstCharacter=!整行:~0,1! 回显第一个字符是!第一个字符! ) 端部 输出是

First Character is a First Character is b First Character is c 第一个字符是 第一个字符是b 第一个字符是c 我无法找到直接使用%%I的方法,因此临时变量wholeLine。为了清晰起见,我添加了变量firstCharacter,但它不需要存在,就可以工作。我本可以回应的!整行:~0,1!直接的


玩得开心。

你能解释一下你想做什么吗?以防万一有人做了一个看起来像
a=b=c
的变量,你的代币会漏掉剩下的部分。将其更改为
tokens=1*
,您将在%%j中的第一个
=
之后获得所有内容