Я хочу написать файл .bat, у меня есть две папки с именами A и B. У меня есть изображения на A, и я хочу перенести их из A в B, но я хочу передать изображения, которых нет. Названия изображений: 1.jpg 2.jpg ,,,, 90.jpg Как я могу это сделать? Является ли это возможным?

В папке А есть

1.jpg
2.jpg
...
40.jpg

В папке B есть

1.jpg
2.jpg
...
90.jpg

Я просто хочу передать 41.jpg ,,,,, 90.jpg, но этот код должен быть динамическим, потому что имена файлов будут изменены в следующий раз.

Благодарность

1
user3086226 10 Мар 2014 в 14:36
Попробуйте создать одну хеш-таблицу для имен изображений папки B.. и попробуйте найти имена изображений папки A в хэш-таблице, если они не существуют.. делайте все, что хотите (копировать, перемещать... и т. д.)
 – 
vinod
10 Мар 2014 в 14:39

2 ответа

Лучший ответ

Вы можете пронумеровать картинки в A

for %%F in (A\*) do

Затем проверьте, существуют ли они в B

if not exist "B\%%~nxF"

И скопируйте их, если они этого не сделают

copy /Y "%%F" B

Таким образом:

for %%F in (A\*) do if not exist "B\%%~nxF" copy /Y "%%F" B

То есть, если я правильно вас понял, вы хотите скопировать только все изображения из A, которых еще нет в B. Ваш вопрос немного сбивает с толку в этом отношении, потому что кажется, что вы хотите скопировать изображения из A в B, которые < em> не существуют в A, что не имеет большого смысла.

1
Joey 10 Мар 2014 в 14:49
Спасибо за ответ, я вернусь вскоре после того, как попробовал
 – 
user3086226
10 Мар 2014 в 15:33
Я пропустил передачу измененных файлов, я имею в виду, если какие-либо файлы изменились, я тоже хочу передать их, как я могу их обнаружить? любая команда для обнаружения?
 – 
user3086226
12 Мар 2014 в 16:56
@ user3086226: Тогда используйте ответ dbenham. Возможно, с немного другими вариантами. Или просто скопируйте все файлы. Дело не в том, что перезапись нескольких десятков файлов является узким местом в производительности.
 – 
Joey
12 Мар 2014 в 16:58
Как я могу писать robocopy в цикле for каждую 1 секунду в пакетном файле
 – 
user3086226
12 Мар 2014 в 20:36

Пакетный скрипт не требуется - все, что вам нужно - это команда ROBOCOPY:

robocopy A B /xc /xn /xo /xx /njh /njs /ns /nc /ndl

Все параметры, начинающиеся с /n, просто управляют тем, какая информация выводится на экран. Выбранные мной параметры приводят к отображению только скопированных имен файлов.

3
dbenham 10 Мар 2014 в 15:20
Я искал правильные флаги для передачи xcopy, но потом снова отвлекся на работу ;-). Согласитесь, лучше использовать инструмент, который делает именно то, что им нужно.
 – 
Joey
10 Мар 2014 в 16:01
Привет, я хочу использовать его каждую 1 секунду, поэтому я должен написать пакетный файл, как я могу его написать
 – 
user3086226
12 Мар 2014 в 17:01