2014-12-04 21 views
1

我已經在通過每一個文件中指定的文件夾運行Win7的批處理文件寫的for環的Windows批處理文件提取號碼:從文件名

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

這些文件都是這種格式abc_123_1234567.txt。如何從文件名中提取最後一組數字(即1234567)並將它們放入變量中?

+0

http://stackoverflow.com/questions/6120623/how-to-extract-number-from-string-在批量 看一看的鏈接。 – 2014-12-04 12:57:26

+0

假設有多個文件名與tha模式匹配。你想要哪個號碼?該模式始終是string_string_stringyouwant.ext? – Magoo 2014-12-04 12:59:55

+0

for循環將通過在轉彎的每個文件運行,所以永遠只能一個文件,它必須考慮到從提取的數字。 – 2014-12-04 13:13:38

回答

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 
) 
+0

我在搜索詞中附加了'$'以使解決方案更加精確。 – dbenham 2014-12-13 14:18:44

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

提供的只有一個文件匹配您所提供的格式