批量重命名文件夹?

批量重命名文件夹?

这可能是一个超级简单的已经解决的任务,但是:

我有一系列包含各种格式的电子书的文件夹。它们的文件夹名称格式如下:

\Lastname, Firstname (n books)\

我想将每个文件夹重命名为

\Firstname Lastname\

我猜想这可以通过批处理文件轻松完成,但是我已经很长时间没有进行字符串解析了,所以我不记得该怎么做了。

需要帮助吗?我使用的是 Windows 7。

答案1

假设空格与您的示例一致(即 Firstname 和 Lastname 没有空格),那么这应该可以工作。

@echo off

setlocal EnableDelayedExpansion

for /f "tokens=1,2,*" %%a in ('dir /a:d /b') do (
    set lastname=%%a
    set lastname=!lastname:~0,-1!
    ren "%%a %%b %%c" "%%b !lastname!"
)

endlocal

它只是用空格分隔,并修剪与批处理文件位于同一目录中的所有目录的姓氏的逗号。

如果名称可以有空格,则需要进行一些分隔符操作。我会去摆弄它。

编辑:

开始吧。摆弄分隔符意味着 Firstname 前后被空格包围,必须将其修剪掉。因此,本质上,它期望 aLastname后跟 a,后跟 a Firstname 后跟 a (whatever。Firstname 周围的空格很重要(在您的示例中也存在)。名称内的空格可以正常工作。

@echo off

setlocal EnableDelayedExpansion

for /f "tokens=1,2,* delims=,(" %%a in ('dir /a:d /b') do (
    set firstname=%%b
    set firstname=!firstname:~1,-1!
    ren "%%a,%%b(%%c" "!firstname! %%a"
)

endlocal

您可能希望进行测试运行,通过在echo前面放置ren,以确保它按预期工作。

相关内容