从批处理文件中的字符串中提取数字

时间:2013-10-28 23:17:31

标签: regex batch-file

从批处理文件中我想从以下字符串中提取数字653456

C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM

数字会改变,但它总是只是数字。

我目前的理论是搜索符合\alldigits\的内容,然后用空格替换两个\,但我无法理解它。

4 个答案:

答案 0 :(得分:6)

假设数字始终是父文件夹(结束前的文件夹):

@echo off
set "str=C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM"
for %%F in ("%str%\..") do set "number=%%~nxF"

答案 1 :(得分:5)

编辑 - 代码示例适用于纠正评论中显示的错误

set d=C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM
for %%f in ("%d:\=" "%") do for /f %%n in ('echo %%f^|findstr /b /e /r "\"[0-9]*\""') do (
    echo %%~n
)

在路径前面加上一个引号,拆分路径,用引号替换每个反斜杠一个空格和一个引号并附加一个引号(所以我们有一个要迭代的元素列表),并为每个部分检查它是否是仅由数字组成

答案 2 :(得分:1)

@echo off 
setlocal EnableDelayedExpansion
set "string=C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM"

for /L %%d in (0,1,9) do set "string=!string:\%%d=\ %%d!"
for /F "tokens=2" %%a in ("%string%") do for /F "delims=\" %%b in ("%%a") do echo Number: [%%b]

答案 3 :(得分:0)

这使用了来自 - https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

的名为repl.bat的帮助程序批处理文件
@echo off 
set "string=C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM"
echo "%string%"|repl ".*\\([0-9]*)\\.*" "$1"