我在Win7批处理文件中编写了一个for
循环,该文件遍历指定文件夹中的每个文件:
for /f %%f in ('dir /b C:\some_folder') do (
echo %%f
)
文件格式为abc_123_1234567.txt
。如何从文件名中提取最后一组数字(即1234567
)并将它们放在变量中?
答案 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%
如果只有一个文件符合您提供的格式