将jpg文件递归搜索,复制和重命名为父文件夹名称

时间:2015-09-08 20:41:34

标签: windows batch-file cmd

我一直试图通过混合使用不同的批处理命令(复制,forfiles)来弄清楚如何做到这一点,但是我无法找出一个恰到好处的,执行复制,重命名并考虑目录位置。

我有一个不同级别的目录结构,其中包含许多文件,但是它们大多都有" folder.jpg"。

类似于:

  • 父\ child1 \ folder.jpg
  • 父\的child2 \ folder.jpg
  • 父\ child3 \ child4 \ folder.jpg
  • 父\ child3 \ child5 \ folder.jpg

我想扫描一下,对于任何名为" folder.jpg"的文件,制作副本,并将其重命名为" child1-img.jpg"。然后我会在我的结构中看到:

  • 父\ child1 \ folder.jpg
  • 父\ child1 \ child1-img.jpg
  • 父\的child2 \ folder.jpg
  • 父\的child2 \的child2-img.jpg
  • 父\ child3 \ child4 \ folder.jpg
  • 父\ child3 \ child4 \ child4-img.jpg
  • 父\ child3 \ child5 \ folder.jpg
  • 父\ child3 \ child5 \ child5-img.jpg

我可以从目录运行并且只影响子目录的批处理脚本是完美的。

非常感谢您提供任何指导,如果我遗漏了任何重要细节,请告诉我。

修改

@保罗

嗨,保罗,似乎想要创建一个文件夹名称的每个部分的文件?我在下面有一个日志输出。我正在读这个吗?

  START LOOP
  COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\New-img.jpg"
  END LOOP
Press any key to continue . . .
  COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\A-img.jpg"
  END LOOP
Press any key to continue . . .
  COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\Test-img.jpg"
  END LOOP
Press any key to continue . . .
  COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\Second-img.jpg"
  END LOOP
Press any key to continue . . .
  COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\Test-img.jpg"
  END LOOP
Press any key to continue . . .
  COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\Folder-img.jpg"
  END LOOP

1 个答案:

答案 0 :(得分:1)

==运行脚本之前的目录结构

C:>dir /s /b /a-d
C:\Users\pwatson\test\parent\chi ld3\child4\folder.jpg
C:\Users\pwatson\test\parent\chi ld3\child5\folder.jpg
C:\Users\pwatson\test\parent\child1\folder.jpg
C:\Users\pwatson\test\parent\child2\folder.jpg

==脚本

SETLOCAL ENABLEDELAYEDEXPANSION

FOR /F "usebackq tokens=*" %%d in (`dir /s /b folder.jpg`) DO (
    SET DIRPATH=%%~dpd
    IF "!DIRPATH:~-1!" EQU "\" (
        SET DIRPATH=!DIRPATH:~0,-1!
    )

    FOR %%f IN ("!DIRPATH!") DO (
        SET PICDIR=%%~nxf
        COPY "%%d" "!DIRPATH!\!PICDIR!-img.jpg"
    )
)

EXIT /B 0

==运行脚本后的目录结构

C:>dir /s /b /a-d
C:\Users\pwatson\test\parent\chi ld3\child4\child4-img.jpg
C:\Users\pwatson\test\parent\chi ld3\child4\folder.jpg
C:\Users\pwatson\test\parent\chi ld3\child5\child5-img.jpg
C:\Users\pwatson\test\parent\chi ld3\child5\folder.jpg
C:\Users\pwatson\test\parent\child1\child1-img.jpg
C:\Users\pwatson\test\parent\child1\folder.jpg
C:\Users\pwatson\test\parent\child2\child2-img.jpg
C:\Users\pwatson\test\parent\child2\folder.jpg