我有一个包含以下文件的目录:
PPP1234MM.xml
PPP4532MM.xml
PPP9843MM.xml
我需要使用batch命令提取文件名的数字部分。请帮忙!
答案 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
进行测试