Windows: копировать файлы и менять расширение без дубликатов

418
User528491

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

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

0
Использовать опцию `/ MAXAGE: n`? DavidPostill 5 лет назад 0
Ваш третий пункт говорит, что вы будете делать это вручную, так в чем же проблема? Seth 5 лет назад 1
@ Я хотел сказать, что сценарий не должен быть запущен периодически; это можно сделать вручную. Тем не менее, он должен учитывать дубликаты. User528491 5 лет назад 0
Переименуйте файлы в исходном каталоге и просто запустите robocopy, как обычно. Robocopy должен оптимизировать и пропустить существующие файлы. Seth 5 лет назад 0

1 ответ на вопрос

2
LotPings

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

И используйте 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 
Пытается скопировать `D: \ final \ D: \ initial \ file.jpg` с ошибкой` Указывает ли ... имя файла или имя каталога на целевом объекте? ` User528491 5 лет назад 0
Извините, забыл вставить модификатор `~ n`, который использует только имя из исходного файла без диска, путь. LotPings 5 лет назад 1
Работает хорошо, но теперь каждый раз запрашивает подтверждение, если целью является файл или каталог. Кроме того, когда я запускаюсь снова, он спрашивает, хочу ли я перезаписать все файлы (чего нет) User528491 5 лет назад 0
Это не мой день, модификатор также отсутствовал в проверке. Пожалуйста, попробуйте еще раз. LotPings 5 лет назад 1
О да! Это может стать раздражающим время от времени; Большое спасибо :) Подтверждение перезаписи прошло; хотя он по-прежнему спрашивает меня каждый раз, является ли цель файлом или каталогом `D: \ final \ file.jpg указывает имя файла или имя каталога для цели?` для всех файлов User528491 5 лет назад 0
Давайте возьмем копию без х, и мы должны быть хорошими. Для подавления сообщения `1 файл (ов) скопирован` apppend`> NUL` к копии LotPings 5 лет назад 1
Отлично! Я никогда не смотрел на команду `copy` User528491 5 лет назад 0