3

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

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

数字会改变,但它永远只是数字。

我目前的理论是搜索适合的东西\alldigits\,然后用空格替换两个\s,但我不太明白。

4

5 回答 5

8

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

@echo off
set "str=C:\Users\testing\AppData\Local\Test\abc123\643456\VSALBT81_COM"
for %%F in ("%str%\..") do set "number=%%~nxF"
于 2013-10-29T01:11:05.340 回答
6

编辑 - 代码示例适用于更正注释中显示的错误

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
)

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

于 2013-10-29T13:15:26.930 回答
2
@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]
于 2013-10-29T01:21:34.967 回答
0

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"
于 2013-10-28T23:31:54.380 回答
0

这是我如何从字符串中批量删除数字(不是文件路径,通常应该适用于“字符串”)

@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

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

如何从批处理中的字符串中提取数字

于 2021-09-03T00:00:17.287 回答