【问题标题】:Batch file to copy and rename files with folder name使用文件夹名称复制和重命名文件的批处理文件
【发布时间】:2014-02-02 18:49:23
【问题描述】:

我有一个文件夹,其中包含数百个电影子文件夹,每个子文件夹都包含几部电影和几张 jpg。该文件夹中的每个电影子文件夹和一个 jpg 都被赋予了电影的名称(即文件夹名称:The Matrix 和图像名称:The Matrix.jpgbackdrop.jpgfanart.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

【问题讨论】:

  • 如果你命名 2 个文件 folder.jpg 并将它们放在同一个文件夹中,最后复制的文件将覆盖现有文件,你需要为每个文件指定一个唯一的名称以便按顺序留住他们。在您的示例中,即使您将硬编码的文件名更改为变量,您也需要想出一种方法来使名称唯一以保留每个文件......也许像 -。不幸的是,我的大脑因工作而被烧毁,所以我无法给出一个实际的工作示例。
  • 换种说法 - 您不能将三个文件放在同名的文件夹中。我们是否误解了您想要做什么?

标签: batch-file copy rename


【解决方案1】:
@echo off
    set "whereToStart=d:\movies"

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

对于每个文件夹,如果它包含一个与目录同名的 .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" 
        )
    )

【讨论】:

    猜你喜欢
    • 2016-09-11
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    相关资源
    最近更新 更多