Windows:复制文件并更改扩展名而不重复

Windows:复制文件并更改扩展名而不重复

我有一个目录,里面有不带扩展名的图像文件。假设它是D:\initial\。现在我想将这些文件复制到目录中,并将每个文件的D:\final\扩展名更改为。.jpg

我使用ROBOCOPY的解决方案:

@echo off

SET srcDir=D:\initial\
SET destDir=D:\final\

echo Copying files from %srcDir%
ROBOCOPY %srcDir% %destDir% /s /min:102400
echo Copying done

cd %destDir%

echo Renaming to JPG
ren *. *.jpg

但是,有一定的条件:

  1. 仅复制大小大于 100 KB 的文件。
  2. 不要删除源目录中的文件。
  3. 源目录将在特定时期获取较新的文件;将它们复制到目标目录(手动,这里不需要自动化)

我的解决方案满足前两个条件,但是当我在新文件到达后再次运行时,旧文件也会被复制,从而在重命名时出现错误。

答案1

检查文件大小以及目标文件是否存在,并对源文件进行迭代。

并且使用x copy,而不是每次都调用 robocopy,这样会有些过度。

一次性复制到带有扩展名的新名称,无需重命名。

@echo off

SET "srcDir=D:\initial"
SET "destDir=D:\final"

echo Copying files from %srcDir%
For %%A in ("%srcDir%\*.") do (
    if %%~zA gtr 102400 if not exist "%destDir%\%%~nA.jpg" copy "%%~fA" "%destDir%\%%~nA.jpg" >NUL
)
echo Copying done

答案2

xcopy <srcDir> <destDir>.<append>

例子 xcopy c:\Photos_with no_extensions\* c:\Jpegs\*.jpg

或者为你xcopy D:\initial\* D:\final\*.jpg

它会将第一个目录中的所有文件复制到第二个目录中,并在末尾添加 .jpg。一个缺点是它只会添加新的扩展名,即 file.pdf 会变成 file.pdf.jpg

相关内容