У меня есть каталог с файлами изображений без расширения. Допустим, это будет 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 КБ.
  2. Не удаляйте файлы в исходном каталоге.
  3. Исходный каталог будет в определенные периоды получать новые файлы; скопируйте их в каталог назначения (вручную, здесь никакой автоматизации не требуется)

Мое решение удовлетворяет первым двум условиям, но когда я запускаю снова после поступления новых файлов, старые также копируются, что приводит к ошибке при переименовании.

1 ответ1

2

Проверьте размер файла и существует ли целевой файл с итерацией для исходных файлов.

И используйте 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .