如何按点拆分文件名并获取最后一部分

时间:2013-08-08 12:45:32

标签: windows batch-file split

所以问题是我会得到如下的文件名:

"a.b.c.d.e.f.g"

我需要得到最后两部分。在这种情况下,

"f.g"

我不知道字符串会有多少个点。

谢谢你的帮助!

3 个答案:

答案 0 :(得分:3)

@ECHO OFF
SETLOCAL
SET "fname=a.b.c.d.e.f.g"

FOR %%a IN (%fname%) DO FOR %%b IN (%%~na) DO ECHO %%~xb%%~xa

答案 1 :(得分:2)

试试这个:

@echo off &SETLOCAL
SET "fname=a.b.c.d.e.f.g"
:loop
SET /a t+=1
SET "d="
FOR /f "tokens=%t% delims=." %%a IN ("%fname%") DO SET "d=%%a"
SET "f=%g%"&SET "g=%e%"&SET "e=%d%"
IF DEFINED d GOTO :loop
ECHO %f%.%g%

€:适用于所有分隔符,不仅适用于.

答案 2 :(得分:0)

您可以使用%~xI`中的参数修饰符x来仅访问扩展名,然后再使用它两次。

@echo off
set "fname=a.b.c.d.e.f.g"
for /F "delims=" %%A in ("%fname%") DO (
   set "ext2=%%~xA"
   for /F "delims=" %%A in ("%%~nA") DO set "ext1=%%~xA"
)
echo %ext1%%ext2%