【问题标题】:Replace part of a folder and its subfolders names using batch?使用批处理替换部分文件夹及其子文件夹名称?
【发布时间】:2015-10-28 00:48:12
【问题描述】:

我的计算机上有一个文件夹结构,它们的格式都是 e.g. “照片”然后是子文件夹“Summer 2012”“Winter 2012”,它们还有更多子文件夹。我想在每个文件夹名称之前放置名称“David”,即“David Photos”“David Summer 2012”等。有没有我可以写的批处理文件来做到这一点?我的最后一次尝试如下:

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

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

提前感谢您的帮助!

【问题讨论】:

  • 到目前为止你尝试过什么?您可以在 for 循环中使用 ren C:\files David files
  • 我尝试的最后一个程序是:@echo off for /D /R %%G IN ("\\Sampledrive\Photos") DO (REN "%%G" "David %%G" ) exit 它在命令窗口中滚动显示“命令的语法不正确”
  • 将您的示例代码放入您的问题edit,而不是在评论中...

标签: windows batch-file batch-rename


【解决方案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

【讨论】:

    【解决方案2】:

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

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

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

    遍历通过dir获得的现有文件夹列表:

    for /f "delims=" %%G in ('dir /s /ad /b "\sampledrive\Photos"') do ren "%%G" "David %%~nxG"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 2017-06-07
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      相关资源
      最近更新 更多