我正在制作一个批处理程序,它将遍历文本文件的每一行。每行将具有类似的格式,因为它是一系列字母,然后是空字符或数字,后跟更多字符,如下所示:
RRR14
AMRCC1M_08
TT
在运行代码时,我需要能够同时使用整个字符串和第一个数字之前的字母(即 var1=RRR14 和 var2=RRR),但我不确定如何仅提取前导字母,因为长度和每个字符串的值都不同。此外,由于不能保证字符串中有数字,我不知道如何去做。
编辑:使用建议的解决方案,我有一个新问题。似乎 var2 没有正确更新。我运行代码:
for /f "tokens=1" %%a in (%1.txt) do (
for /f "tokens=1 delims=0123456789" %%G in ("%%a") do set var2=%%G
echo %var2%
echo %%a
echo.
)
使用所有 ECHO 尝试调试,我得到:
>set var2=RRR
JIKK
RRR14
其中 JIKK 似乎来自 JIKK8(文本文件中的最后一行)。不确定我是否错误地引用了变量或这里不起作用
您可以使用FOR /F
命令并使用所有 10 个数字作为DELIMS
选项。
所以在你的例子中。
FOR /F "TOKENS=1 delims=0123456789" %%G IN ("RRR14") DO SET var2=%%G
因此,根据您在问题中更新的新代码,您有两个选择。
第一个选项是创建另一个带括号的代码块并直接使用 FOR 变量。
@ECHO OFF
for /f "tokens=1" %%a in (%1.txt) do (
for /f "tokens=1 delims=0123456789" %%G in ("%%a") do (
echo %G%
echo %%a
echo.
)
)
您的第二个选择是使用延迟扩展来引用变量,而无需额外的带括号的代码块。
@ECHO OFF
setlocal enabledelayedexpansion
for /f "tokens=1" %%a in (%1.txt) do (
for /f "tokens=1 delims=0123456789" %%G in ("%%a") do set "var2=%%G"
echo !var2!
echo %%a
echo.
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句