2014-01-16 2 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 

Это должно извлечь и показать цифровую часть. Вы можете изменить маску filematch. Я просто использовал ppp*.xml для моего тестирования

Смежные вопросы