0

所以问题是我会得到文件名,例如:

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

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

"f.g"

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

谢谢你的帮助!

4

3 回答 3

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
于 2013-08-08T14:57:32.790 回答
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%

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

于 2013-08-08T14:39:03.013 回答
1

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

@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%  
于 2013-08-08T15:01:54.147 回答