使用批处理替换部分文件夹及其子文件夹名称?

时间:2015-08-05 09:58:21

标签: windows batch-file batch-rename

我的计算机上有一个文件夹结构,它们都是例如“照片”然后子文件夹“2012年夏季”“2012年冬季”,他们有更多的子文件夹。我想在每个文件夹名称之前放置名称“David”,即“David Photos”“David Summer 2012”等。有没有我可以编写的批处理文件来执行此操作?我的最后一次尝试如下:

for /D /R %%G IN ("\\sampledrive\Photos") DO (REN "%%G" "dan%%G")

但是命令窗口表示命令的语法不正确

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

使用REN "%%G" "David %%G"会将文件夹重命名为" David \ sampledrive \ Photos",因此cmd返回的语法不正确。请改用%%~nxG,它表示文件夹,而不是路径。

@echo off 
For /D /r "\sampledrive\Photos" %%G IN (*) DO ( 
    REN "%%G" "David %%~nxG"
)
echo Finished!
pause >nul

答案 1 :(得分:0)

for /R将一个以驱动器号开头的完整路径放入循环变量中,因此在其前面添加"David %%G"之类的文本会尝试创建无效的文件名:"David c:\folder\file"

要将指定的fuly指定文件夹/文件重命名为ren的第一个参数,只需在第二个参数中提供文件/文件夹name.ext:ren "%%G" "David %%~nxG"

然而,在枚举时重命名可能会再次将已重命名的文件暴露给枚举,它可能会持续~40次,直到达到260个路径长度限制,并且您将拥有一个名为{{1的文件}}

迭代通过David David David ...........获得的现有文件夹列表:

dir