Если вы копируете файлы с помощью перетаскивания или копирования/вставки, вы можете просто выбрать опцию «Пропустить этот файл» или «Пропустить эти файлы», чтобы не перезаписывать файлы, которые уже существуют в целевой папке.
Или, если вы используете командную строку copy , вы можете ответить N, чтобы пропустить уже существующие файлы.
Но как я могу сделать то же самое с помощью командного файла, используя любую командную строку копирования?
Есть два способа сделать это.
Вы можете использовать оператор IF для копирования файла только в том случае, если файл не существует в месте назначения.
IF NOT EXIST " topath filename "COPY" frompath file "" topath file "
Друг NoW, Гленн Реймче, поделился гораздо лучшим способом, используя командную строку copy без оператора IF.
echo n | copy/-y "frompath file" "topath file"
Если вам нужно скопировать папку в другое место, но не перезаписывать файлы, уже существующие в новом месте, вот что вы можете сделать.
FOR% f in (" frompath file *. *) НЕ СУЩЕСТВУЕТ "topath % ~ nxf" COPY "frompath file" "topath file"
% ~ nx в команде — это удалить информацию о папке из переменной % f , чтобы в результате вы получили только имя файла.
Или используйте много вместо этого мощная альтернатива командной строки копирования, то есть robocopy.
Вы можете использовать следующие переключатели, чтобы пропустить определенные файлы.
/xc - исключить измененные файлы/xn - исключить более новые files/xo - исключить старые файлы
Например, чтобы скопировать все файлы из папки A в папку B, исключая все файлы с более новой меткой времени.
robocopy frompath topath /s/xn
Надеюсь, это поможет, и, пожалуйста, поделитесь, если у вас есть лучшее решение.