我已經在通過每一個文件中指定的文件夾運行Win7的批處理文件寫的for
環的Windows批處理文件提取號碼:從文件名
for /f %%f in ('dir /b C:\some_folder') do (
echo %%f
)
這些文件都是這種格式abc_123_1234567.txt
。如何從文件名中提取最後一組數字(即1234567
)並將它們放入變量中?
我已經在通過每一個文件中指定的文件夾運行Win7的批處理文件寫的for
環的Windows批處理文件提取號碼:從文件名
for /f %%f in ('dir /b C:\some_folder') do (
echo %%f
)
這些文件都是這種格式abc_123_1234567.txt
。如何從文件名中提取最後一組數字(即1234567
)並將它們放入變量中?
就可以解決這個很好用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
)
我在搜索詞中附加了'$'以使解決方案更加精確。 – dbenham 2014-12-13 14:18:44
for /f "tokens=3delims=_." %%f in ('dir /b C:\some_folder\*') do (
set /a filenum=%%f
echo %%f
)
echo filenum is %filenum%
提供的只有一個文件匹配您所提供的格式
http://stackoverflow.com/questions/6120623/how-to-extract-number-from-string-在批量 看一看的鏈接。 – 2014-12-04 12:57:26
假設有多個文件名與tha模式匹配。你想要哪個號碼?該模式始終是string_string_stringyouwant.ext? – Magoo 2014-12-04 12:59:55
for循環將通過在轉彎的每個文件運行,所以永遠只能一個文件,它必須考慮到從提取的數字。 – 2014-12-04 13:13:38