我的计算机上有一个文件夹结构,它们都是例如“照片”然后子文件夹“2012年夏季”“2012年冬季”,他们有更多的子文件夹。我想在每个文件夹名称之前放置名称“David”,即“David Photos”“David Summer 2012”等。有没有我可以编写的批处理文件来执行此操作?我的最后一次尝试如下:
for /D /R %%G IN ("\\sampledrive\Photos") DO (REN "%%G" "dan%%G")
但是命令窗口表示命令的语法不正确
提前感谢您的帮助!
答案 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