从批处理文件中,我想653456
从以下字符串中提取数字:
C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM
数字会改变,但它永远只是数字。
我目前的理论是搜索适合的东西\alldigits\
,然后用空格替换两个\
s,但我不太明白。
从批处理文件中,我想653456
从以下字符串中提取数字:
C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM
数字会改变,但它永远只是数字。
我目前的理论是搜索适合的东西\alldigits\
,然后用空格替换两个\
s,但我不太明白。
假设数字始终是父文件夹(结束前的文件夹):
@echo off
set "str=C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM"
for %%F in ("%str%\..") do set "number=%%~nxF"
编辑 - 代码示例适用于更正注释中显示的错误
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
)
只需在路径前面加上引号,拆分路径,用引号替换每个反斜杠空格和引号并附加引号(因此我们有要迭代的元素列表),并检查每个部分是否仅由数字
@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]
repl.bat
这使用从 - https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat调用的帮助程序批处理文件
@echo off
set "string=C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM"
echo "%string%"|repl ".*\\([0-9]*)\\.*" "$1"
这是我如何从字符串中批量删除数字(不是文件路径,通常应该适用于“字符串”)
@ECHO OFF
::set mystring=Microsoft Office 64-bit Components 2013
set mystring=Microsoft 365 Apps for enterprise - en-us
echo mystring = %mystring%
for /f "tokens=1-20 delims=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$&*()-= " %%a in ("%mystring%") do (
IF %%a == 64 (
set ONum=%%b
GoTo varset
)
IF %%a == 32 (
set ONum=%%b
GoTo varset
)
set ONum=%%a
)
:varset
echo numfromalphanumstr = %numfromalphanumstr%
pause
https://www.dostips.com/forum/viewtopic.php?t=3499
https://superuser.com/questions/1065531/filter-only-numbers-0-9-in-output-in-classic-windows-cmd