2014-01-14 40 views
0

我有一个文件夹,其中包含数百个电影子文件夹,每个文件夹包含几部电影和几个jpg。该文件夹中的每个电影子文件夹和一个jpg都被赋予电影名称(即文件夹名称:The Matrix和图像名称:The Matrix.jpg,backdrop.jpg,fanart.jpg)。我想复制与文件夹名称相同的每个jpgs,将这些副本命名为folder.jpg,并将它们放在同一个文件夹中。使用文件夹名称复制和重命名文件的批处理文件

我发现这个脚本,但无法弄清楚如何针对我的情况调整它,因为它假设文件夹中只有一个jpg。

@echo off 
for /f "delims=" %%F in ('dir /b /s *.jpg') do Echo COPY "%%~dpnxF" "%%~dpF\folder.jpg" 
echo Done 
Pause 
+0

的存在,最后一个文件复制将覆盖现有之一,您需要为每个文件提供一个唯一的名称以保留它们。在你的例子中,即使你将硬编码的文件名改为一个变量,你也需要想出一个办法让这个名字独一无二以保留每个文件...也许像 - <原始文件名>。不幸的是,我的大脑因工作而油炸,所以我无法给出一个实际的工作示例。 – Taegost

+0

要重新说明这一点 - 不能将三个文件放在具有相同名称的文件夹中。我们是否误解了你想要做的事情? – foxidrive

回答

0
@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相同的目录内。可以添加aditional的检查,以避免不需要的副本,如果你的名字2个文件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" 
     ) 
    ) 
相关问题