如何批量重命名多个文件夹

时间:2014-05-23 21:45:31

标签: batch-file rename directory batch-rename

我有几个文件夹,名称如下:

123 - 1234 - string1 - string2

并希望将它们全部重命名为

string1 - string2

使用批处理文件。

我正在寻找类似的东西:

@echo off
setlocal EnableDelayedExpansion

for /D %%f in (C:\Users\*) do (
    set string=%%f
    for /f "tokens=1,2,3,4 delims=-" %%a in (%%f) do (set part1=%%a)&(set part2=%%b)&(set part3=%%c)&(set part4=%%d)
    set newstring=part3 - part4
    rename "string" "newstring"
)

不幸的是,它不起作用,我不知道出了什么问题......你有更好的想法吗?

1 个答案:

答案 0 :(得分:2)

您必须将变量名称括在感叹号中以使其扩展,如!part3!中所示。这必须在您想要变量值的每个地方完成。感叹号用于FOR循环内的延迟扩展。您可以将百分比用于正常扩展,但不能在也设置值的循环中使用。

此外,您的内部FOR / F循环必须在IN()子句中使用双引号。正如当前所写,它正在尝试使用您的文件夹名称打开文件。

但在你的情况下有一种更简单的方法:

@echo off
for /d %%F in (c:\users\*-*-*-*) do for /f "tokens=2* delims=-" %%A in ("%%~nxF") do ren "%%F" "%%B"