0

%%x

a=23
b=56
c=89

在一个.txthi.txt

for %%x in (hi.txt) do (echo %%x:~0,1 %%x)

但它失败了......

谢谢你

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

4

2 回答 2

1

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

@echo 关闭
设置本地启用扩展

for /f "tokens=1,2 delims==" %%i in (hi.txt) do (
   echo %%i 的值为 %%j
)

这将输出

a 的值为 23
 b 的值为 56
 c 的值为 89

如果您需要更多信息,请参阅“帮助”。

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

我希望这有帮助。

于 2012-08-16T18:10:12.617 回答
0

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

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

    @echo 关闭
    setlocal ENABLEEXTENSIONS,ENABLEDELAYEDEXPANSION

    for /f %%i in (hi.txt) 做 (
       设置整行=%%i
       设置 firstCharacter=!wholeLine:~0,1!
       回声第一个字符是!firstCharacter!
    )

    本地端

输出是......

第一个字符是
 第一个字符是 b
 第一个字符是 c

我无法找到直接使用 %%i 的方法,因此临时变量 WholeLine。为了清楚起见,我添加了变量 firstCharacter,但它不需要存在才能使其工作。我本可以回应!wholeLine:~0,1!直接地。

玩得开心。

于 2012-08-17T15:46:37.810 回答