批处理文件重命名多个文件夹

6
我是一名有用的助手,可以为您翻译文本。
我正在尝试编写一个批处理脚本来重命名多个文件夹。 我想做类似于以下的操作: 在“Workspace”文件夹下重命名所有文件夹,将我的名字附加在文件夹名称的末尾。
例如,将以下文件夹重命名:
Workspace/RiskFolder
Workspace/PNLFolder

到:

Workspace/RiskFolder_myname
Workspace/PNLFolder_myname

这是可能的吗?

5个回答

16
你可以使用for循环遍历每个目录并像这样重命名:
for /D %%f in (C:\path\to\Workspace\*) do rename "%%f" "%%~nxf_myname"

我在Windows 7上测试过,但至少也应该可以在Windows XP上使用。

它的作用是:对于路径中的每个目录(括号内),将目录名称分配给变量%%f,然后将目录%%f重命名为您想要的格式的名称(附加了您的名称)。%%f保存全路径名,这对于rename命令的第一个参数是很好的,但对于第二个参数,我们只想要文件名+扩展名,因此在我们的变量名前面添加了~nx修改器。

顺便说一句,当在命令行上使用此for循环时(而不是作为批处理文件的一部分),您只需要使用一个%而不是%%作为变量名。例如:for %f in ... 而不是上述代码。

有关更多详细信息,请参见微软提供的以下参考资料:


有没有什么需要我做的,针对文件夹名称中带有空格的情况? - NewQueries
我在我的电脑上测试过,它可以处理名称中带有空格的目录。因为我们在重命名命令中将名称放在引号中,所以它应该能够很好地处理空格。你遇到了空格方面的困难吗? - Zeb DeOs
很抱歉,它运行良好。我不小心忘记加引号了。谢谢! - NewQueries

3
您可以在批处理文件中使用以下命令:-
for /F "usebackq tokens=*" %%a in (`dir /ad /b %1`) do ren %1\%%a %%a%2

这是DOS中的“for”命令,它遍历给定的一组项目,并针对集合中的每个元素执行给定的操作。对于给定的要求,我们需要执行以下操作:
1)接受包含要重命名子文件夹的文件夹名称(在您的示例中为Workspace)。
2)接受要添加到结尾的字符串(在您的示例中为您的姓名)。
3)列出文件夹中子文件夹的名称。
4)通过将字符串附加到原始名称来重命名。
让我们看看这个for命令如何实现这一点。此处使用的“for”命令格式为:
for /F ["options"] %variable IN (`command`) do command [command-parameters]

这里的命令假定所需的父目录名称和要附加的字符串作为命令行参数传递。它们由%1和%2(第一个和第二个参数)表示。

为了使我们能够发出要评估的dos命令,我们需要使用/F选项。选项字符串为:-

"usebackq tokens=*"
  • usebackq参数指定反引号字符串将作为一个要被执行的命令。请注意,dir命令用反引号(`)括起来。
  • tokens=*参数表示将每行视为单个标记并传递给命令。

要列出父目录中的子目录,我们使用以下命令:

dir /ad /b %1
  • /ad 仅显示目录(忽略文件)
  • /b 以裸格式展示,即仅返回名称,日期、时间和其他信息不在其中
  • %1 是指向父目录的命令行变量
  • %%a 是在每个迭代中接收子目录名称的变量。因为我们在批处理文件中使用它,所以需要双百分号符号,否则只需要一个(如%a)

最后,我们指定要执行的操作:

ren %1\%%a %%a%2
  • %1\%%a 构建子目录的绝对路径
  • %%a%2 将第二个命令行参数附加到原始名称

有关for命令的更多信息,请在命令提示符中输入以下内容:

for /?

关于另一个使用示例,请参考循环循环:DOS方式


3
无需批处理文件。这可以在命令行中执行。
for /d %D in ("Workspace\*") do ren "%D" "%~nxD_myName"

如果您使用批处理文件,则%D必须变成%%D

1
也许应该是 ... ren "%D" "%~nxD_myName" 才对。 - Andriy M

2

0
For /D %%f in (*) do rename "%%f"  "%%fWhatEverNameYouLike"
pause

暂停一下看看!将其制作成cmd文件并放入要重命名所有子文件夹的文件夹中!它们将被重命名为每个文件夹的名称,加上您喜欢的任何名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接