Windows 使用批处理脚本从字符串中提取数字部分

Windows 使用批处理脚本从字符串中提取数字部分,windows,batch-file,scripting,Windows,Batch File,Scripting,我有一个文件名abcd_1234.java。如何使用批处理脚本仅提取数字并存储到变量中。输出应为1234 字符串没有固定长度,如果字符串为testfile_345.java,则输出应为345 在Unix中,我发现这很容易,但在批处理Scriptping中,我没有得到正确的命令。 请帮忙 谢谢。要获取文件名的最后一个以下划线分隔的部分, 使用字符串替换将下划线替换为空格,并使用简单的for进行迭代 @Echo off & setlocal EnableDelayedExpansion fo

我有一个文件名abcd_1234.java。如何使用批处理脚本仅提取数字并存储到变量中。输出应为1234

字符串没有固定长度,如果字符串为testfile_345.java,则输出应为345

在Unix中,我发现这很容易,但在批处理Scriptping中,我没有得到正确的命令。 请帮忙


谢谢。

要获取文件名的最后一个以下划线分隔的部分,
使用字符串替换将下划线替换为空格,并使用简单的for进行迭代

@Echo off & setlocal EnableDelayedExpansion
for %%A in (*_*.java) do (
    set "fname=%%~nA"
    set "fname=!Fname:_= !"
    for %%B in (!fname!) Do set Number=%%B
    Echo number from %%A is !Number!
)
样本输出:

number from abc__def_123.java is 123
number from abc_123.java is 123

使用“
tokens=2delims=。”解析名称
如果文件名为abc_def_456.java,那么如何实现此目的?添加
tokens=3 delims=。
。我认为@LotPings的方式不太好。数字部分总是在
\uucode>之后和
之前吗?使用
break>abc\u def\u 123.java
创建该文件,然后执行脚本。