Windows批处理文件从文件名中提取编号

时间:2014-12-04 12:55:30

标签: windows batch-file

我在Win7批处理文件中编写了一个for循环,该文件遍历指定文件夹中的每个文件:

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

文件格式为abc_123_1234567.txt。如何从文件名中提取最后一组数字(即1234567)并将它们放在变量中?

2 个答案:

答案 0 :(得分:1)

您可以使用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
)

答案 1 :(得分:1)

for /f "tokens=3delims=_." %%f in ('dir /b C:\some_folder\*') do ( 
    set /a filenum=%%f
    echo %%f
)
echo filenum is %filenum%

如果只有一个文件符合您提供的格式