2014-01-16 57 views
1

的部分我有一個目錄與下列文件:獲取文件名批量

PPP1234MM.xml 
PPP4532MM.xml 
PPP9843MM.xml 

我需要提取使用批處理命令的文件名的數字部分。請幫忙!

+0

總是在3char + 4digits + 2char格式? –

+0

它可能會出現超過4位數字並以2個字符結尾。 – vaibinewbee

回答

1
for /f "tokens=*" %%f in ('dir /l /a-d /b *.xml') do (
    for /f "tokens=1 delims=abcdefghijklmnopqrstuvwxyz" %%n in ("%%~nf") do (
     echo File: %%~nxf = Number %%n 
    ) 
) 

使用非數字字符作爲分隔符在for命令刪除名字的他們。文件列表以小寫形式檢索,以限制列表中的分隔符數量。

0

如果模式與您的問題相同(3個字符,4位數,2個字符),請使用下面的代碼,如果您有其他標準可幫助您更好地通知您。

@echo off 
@title Get Part of filename batch 
@color 0a 

setlocal EnableDelayedExpansion 

for %%A in ("*.xml") do (

    REM Set Filename 
    set "FileFull=%%~nxA" 

    REM Set Number, offset equal 3 (skip 3 first characteres), length equal 4 (four characteres) 
    set "FileNumber=!FileFull:~3,4!" 

    echo !FileNumber! 

) 

pause 
exit 
0
@ECHO OFF 
SETLOCAL 
FOR /f "delims=" %%a IN (
'dir /b /a-d "ppp*.xml" ' 
) DO (
SET "number=" 
SET "name=%%a" 
CALL :process "%%a" 
) 

GOTO :EOF 
:notnum 
IF DEFINED number GOTO show 
:num 
SET "name=%name:~1%" 
:process 
IF NOT DEFINED name GOTO show 
if "%name:~0,1%" lss "0" GOTO notnum 
if "%name:~0,1%" gtr "9" GOTO notnum 
SET "number=%number%%name:~0,1%" 
GOTO num 

:show 
ECHO file %1 --^> %number% 
GOTO :eof 

這應該提取和顯示的數字部分。您可能希望更改文件匹配掩碼。我只是用ppp*.xml我的測試