Windowsbatch file从文件名提取数字

我已经写了一个Win7batch file中的for循环,该文件运行指定文件夹中的每个文件:

 for /f %%f in ('dir /b C:\some_folder') do ( echo %%f ) 

这些文件的格式为abc_123_1234567.txt 。 我怎样才能从文件名提取最后一组数字(即1234567 ),并把它们放在一个variables?

您可以使用JREN.BAT很好地解决这个问题 – 一个混合的JScript /批处理实用程序,通过执行正则表达式搜索来重命名文件,并替换名称。 JREN.BAT是一个纯粹的脚本,它将从XP以后的任何Windows机器上本机运行。

我使用/T测试选项,以便它只列出原始文件和新名称,而不实际重做。 然后,我使用FOR / F来分析结果以获取原始名称和提取的数字。 它需要一些神秘的语法将分隔符设置为一个引号。

 @echo off for /f tokens^=1^,3^ delims^=^" %%A in ( 'jren ".*_\d+_(\d+)\.[^.]*$" "$1" /t /p "C:\some_folder"' ) do ( echo File=%%A Number=%%B ) 
 for /f "tokens=3delims=_." %%f in ('dir /b C:\some_folder\*') do ( set /a filenum=%%f echo %%f ) echo filenum is %filenum% 

只有一个文件与您提供的格式相匹配