获取部分文件名批处理

时间:2014-01-16 16:39:31

标签: batch-file pattern-matching

我有一个包含以下文件的目录:

PPP1234MM.xml
PPP4532MM.xml
PPP9843MM.xml

我需要使用batch命令提取文件名的数字部分。请帮忙!

3 个答案:

答案 0 :(得分: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命令中使用非数字字符作为分隔符删除名称。以小写形式检索文件列表以限制列表中的分隔符数。

答案 1 :(得分: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

答案 2 :(得分: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进行测试