使用文件夹名称复制和重命名文件的批处理文件
Posted
技术标签:
【中文标题】使用文件夹名称复制和重命名文件的批处理文件【英文标题】:Batch file to copy and rename files with folder name 【发布时间】:2014-02-02 18:49:23 【问题描述】:我有一个文件夹,其中包含数百个电影子文件夹,每个子文件夹都包含几部电影和几张 jpg。该文件夹中的每个电影子文件夹和一个 jpg 都被赋予了电影的名称(即文件夹名称:The Matrix
和图像名称:The Matrix.jpg
、backdrop.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
【问题讨论】:
如果你命名 2 个文件 folder.jpg 并将它们放在同一个文件夹中,最后复制的文件将覆盖现有文件,你需要为每个文件指定一个唯一的名称以便按顺序留住他们。在您的示例中,即使您将硬编码的文件名更改为变量,您也需要想出一种方法来使名称唯一以保留每个文件......也许像@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"
)
)
【讨论】:
以上是关于使用文件夹名称复制和重命名文件的批处理文件的主要内容,如果未能解决你的问题,请参考以下文章