在第一个数字之前提取字母 Windows 批处理文件

TG94

我正在制作一个批处理程序,它将遍历文本文件的每一行。每行将具有类似的格式,因为它是一系列字母,然后是空字符或数字,后跟更多字符,如下所示:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Windows 批处理文件以提升的权限启动另一个批处理

比较Windows批处理文件中的2个日期

Windows 7批处理文件循环访问子目录,选择第一个文件

Windows批处理文件中的数字大于或小于另一个

Windows批处理文件删除X天之前的文件,但保留至少X个文件

在Windows批处理文件中,您可以链式执行不是另一个批处理文件的内容吗?

在Windows批处理文件中进行一些数学运算/处理“查找”输出

Windows批处理文件处理-循环

Windows批处理文件将一个文件夹中的文件列出到csv/txt文件中

在用户登录Windows 2003 R2之前运行批处理文件?

如何提取Windows批处理文件中的版本号?

如何在Windows批处理文件中提取字符串的一部分?

依次在Windows批处理文件中调用两个函数

FOR循环只执行延迟扩展的windows批处理文件中的最后一项

从GNUMakeFile调用Windows批处理文件

从Windows批处理文件调用SUBST

Windows批处理文件的隐藏功能

Windows批处理文件:.bat与.cmd?

Windows curl批处理文件

Windows批处理文件Modulo划分

.txt 与 Windows 激活(批处理文件)

多行Windows批处理文件问题

Windows批处理文件执行错误

在Windows中,一个具有递归for循环的批处理文件,其文件名包括空格

如何使用Windows批处理文件从外部文件中搜索值并替换为另一个值

是否可以在Windows命令行中编写一个小的(5行-或更多)批处理文件?

我正在尝试制作一个Windows批处理文件来搜索我的C盘

Windows批处理文件,在标记之间找到一个字符串

一个 IF 语句,用于检查和执行 Windows 批处理文件中每个设置变量的命令