У меня есть каталог со следующими файлами:Получить Часть имени файла пакета
PPP1234MM.xml
PPP4532MM.xml
PPP9843MM.xml
Мне нужно извлечь числовые части имен файлов с помощью команды пакетной обработки. Пожалуйста помоги!
У меня есть каталог со следующими файлами:Получить Часть имени файла пакета
PPP1234MM.xml
PPP4532MM.xml
PPP9843MM.xml
Мне нужно извлечь числовые части имен файлов с помощью команды пакетной обработки. Пожалуйста помоги!
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
, чтобы удалить их название. Список файлов извлекается в нижнем регистре, чтобы ограничить количество разделителей в списке.
Если шаблон совпадает с вашим вопросом (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
@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
для моего тестирования
Всегда в формате 3char + 4digits + 2char? –
может отображаться более 4 цифр и заканчиваться 2 символами. – vaibinewbee