Batch file 批处理文件以复制和重命名具有文件夹名称的文件

Batch file 批处理文件以复制和重命名具有文件夹名称的文件,batch-file,copy,rename,Batch File,Copy,Rename,我有一个包含数百个电影子文件夹的文件夹,每个子文件夹包含两部电影和几个JPG。每个电影子文件夹和文件夹中的一个jpg都有电影名称,即文件夹名称:矩阵和图像名称:the Matrix.jpg、background.jpg、fanart.jpg。我想制作一份与文件夹同名的jpg副本,将这些副本命名为folder.jpg,并将它们放在同一文件夹中 我找到了这个脚本,但不知道如何根据我的情况调整它,因为它假设文件夹中只有一个jpg @echo off for /f "delims=" %%F in ('

我有一个包含数百个电影子文件夹的文件夹,每个子文件夹包含两部电影和几个JPG。每个电影子文件夹和文件夹中的一个jpg都有电影名称,即文件夹名称:矩阵和图像名称:the Matrix.jpg、background.jpg、fanart.jpg。我想制作一份与文件夹同名的jpg副本,将这些副本命名为folder.jpg,并将它们放在同一文件夹中

我找到了这个脚本,但不知道如何根据我的情况调整它,因为它假设文件夹中只有一个jpg

@echo off
for /f "delims=" %%F in ('dir /b /s *.jpg') do Echo COPY "%%~dpnxF" "%%~dpF\folder.jpg"
echo Done
Pause
对于每个文件夹,如果它包含一个与目录同名的.jpg文件,请将该文件作为folder.jpg复制到同一目录中。可以添加常规检查以避免不需要的副本,检查目标文件是否存在

@echo off
    set "whereToStart=d:\movies"

    for /d /r "%whereToStart%" %%f in (*) do (
        if exist "%%~ff\%%~nxf.jpg" if not exist "%%~ff\folder.jpg" (
            copy "%%~ff\%%~nxf.jpg" "%%~ff\folder.jpg" 
        )
    )

如果您将两个文件命名为folder.jpg并将它们放在同一个文件夹中,则最后复制的文件将覆盖现有的文件,您需要为每个文件指定一个唯一的名称以保留它们。在您的示例中,即使您将硬编码文件名更改为变量,也需要想出一种方法使名称唯一以保留每个文件。。。也许是-。不幸的是,我的大脑因工作而崩溃,所以我无法给出一个实际的工作示例。换言之,你不能将三个同名文件放在文件夹中。我们是否误解了你想做什么?
@echo off
    set "whereToStart=d:\movies"

    for /d /r "%whereToStart%" %%f in (*) do (
        if exist "%%~ff\%%~nxf.jpg" if not exist "%%~ff\folder.jpg" (
            copy "%%~ff\%%~nxf.jpg" "%%~ff\folder.jpg" 
        )
    )