Я хотел бы извлечь первое число, найденное в строке пути.
Некоторые примеры
c:\dir\release1\temp should extract: 1
c:\dir\release11\temp should extract: 11
c:\dir\release1\temp\rel2 should extract: 1
c:\dir\release15a\temp should extract: 15
Мой текущий код, который зацикливает имена папок и проверяет, является ли имя папки числом (мне нужны некоторые изменения здесь):
setlocal enableextensions enabledelayedexpansion
set line=one\two\three\4\pet\0\sest\rel6\a
rem set line=%cd%
:processToken
for /f "tokens=1* delims=\" %%a in ("%line%") do (
echo Token: %%a
set line=%%b
rem need fix here: need to extract number from string
echo %%a|findstr /r /c:"^[0-9][0-9]*$" >nul
if errorlevel 1 (echo not a number) else (echo number)
)
if not "%line%" == "" goto :processToken
endlocal
Спасибо!
EDIT:
Я хотел разобрать номер из этой строки пути.
Ну, я нашел решение, которое проверяет только последние 3 символа строки. Пока все нормально.
::test last 3 characters
set relno=!token:~-3,3!
echo !token:~-3,3!|findstr /r /c:"^[0-9]*$" >nul
if errorlevel 1 (echo not number) else (echo number)
::test last 2 characters
set relno=!token:~-2,2!
echo !token:~-2,2!|findstr /r /c:"^[0-9]*$" >nul
if errorlevel 1 (echo not number) else (echo number)
::test last character
set relno=!token:~-1,1!
echo !token:~-1,1!|findstr /r /c:"^[0-9]*$" >nul
if errorlevel 1 (echo not number) else (echo number)