Команда REPLACE – заменить или добавить файл в каталог.
Команда REPLACE используется для замены одного или нескольких файлов в командной строке Windows. Применяется в для синхронизации содержимого каталогов и перезаписи только тех файлов, которые изменились позже, чем дата изменения существующих.
Формат командной строки:
REPLACE [диск1:][путь1]имя_файла [диск2:][путь2] [/A] [/P] [/R] [/W]
Замена файлов на новые:
REPLACE [диск1:][путь1]имя_файла [диск2:][путь2] [/P] [/R] [/S] [/W] [/U]
Параметры командной строки:
[диск1:][путь1]имя_файла — Один или несколько исходных файлов.
[диск2:][путь2] — Каталог, в котором следует заменить файлы.
/A — Добавление новых файлов в конечный каталог. Этот ключ несовместим с ключами /S и /U.
/P — Вывод запроса перед заменой или добавлением файла.
/R — Разрешение замены файлов, предназначенных только для чтения (среди прочих).
/S — Замена файлов во всех подкаталогах конечного каталога. Этот ключ несовместим с ключом /A.
/W — Ожидание вставки диска перед началом выполнения.
/U — Замена только файлов, более старых, чем исходные. Этот ключ несовместим с ключом /A.
Команда REPLACE не позволяет обновить файлы, имеющие атрибуты ”Скрытый” и ”Системный”. Примеры использования:
replace /? — отобразить подсказку по использованию.
replace c:\Folder1\doc2.doc D:\folder2 /A — добавить файл doc2.doc из каталога Folder1 диска C: в каталог Folder2 диска D:
replace c:\Folder1\*.* D:\folder2 /A — добавить все недостающие файлы из каталога Folder1 диска C: в каталог Folder2 диска D:
replace c:\Folder1\*.docx D:\folder2 /U — заменить все файлы с расширением .docx в каталоге Folder2 диска D: на файлы из каталога Folder1 диска C: Выполняется замена только тех файлов, у которых время изменения меньше, чем время заменяющего файла. Данная команда используется для синхронизации содержимого двух каталогов, содержащих одинаковый набор файлов с отличающимся содержимым.
Если исходный и конечный файл имеют одно и то же время модификации, то замена не выполняется. Код завершения ERRORLEVEL устанавливается в 0 независимо от того, выполнялась перезапись конечного файла или нет. При перезаписи, программа выводит на экран сообщение о замене существующего файла:
В случае, когда перезапись не выполняется – сообщение о замене файла отсутствует. Возможные значения ERRORLEVEL при неудачном выполнении команды:
ERRORLEVEL=3 – не найдены пути исходных или конечных файлов.
ERRORLEVEL=11 – недопустимая комбинация параметров командной строки.
Утилиты copy и replace — копирование и замена файлов через командную строку
И в данном посте я рассмотрю замену и копирование файлов через командную строку, а именно, утилиты COPY и REPLACE. Но сперва, как всегда немого лирики.
Пожалуй, любой программист сталкивался с вопросом написания функции для копирования каталога с файлами. Как правило, эти задачи решались при использовании рекурсии. В былые времена, не было мышки и правого клика со вкладкой «копировать, вырезать, вставить», да и синий Волков не сразу появился. Это теперь все так привычно, сидишь за клавиатурой, втыкаешь в зеленое поле Винды, клик туда, клик сюда, и все, задачу решил. Но, бывали и трудные ситуации, когда приходилось прибегать к синему менеджеру. Как не странно, но командная строка и ее утилиты от версии к версии меняют свой вид, Есть даже целый набор утилит типа PsUtils, которые эффективней стандартных ДОСовских. Логический вопрос, кому это все надо! Какой смысл изобретать современного динозавра, йоп те! С другой стороны, такова наша природа человеческая, мы готовы даже велосипед снова изобрести, лишь бы занять свой ум.
Командная строка COPY
Данный шедевр человеческой мысли позволяет произвести копирование (copy) через командную строку файла или файлов или даже их конкатенацию (объединение). Для решения подобных задач север сценариев Windows Script Host предоставляет в распоряжение метод CopyFile объекта FileSystemObject. Синтаксис утилиты командной строки copy, довольно устрашающий:
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B] источник [/A | /B] [+ источник [/A | /B] [+ . ]] [результат [/A | /B]]
/D – указывает на возможность создания зашифрованного файла.
/Y | /-Y – если выбран первый параметр, то будут отсутствовать запросы системы на подтверждение во время копирования (проще говоря, если придется топкой 1000 файлов копировать, то на каждый не будет выпрыгивать надоедливое “а вы уверены, или, может, другу позвоните?”), понятно, что второй параметр как раз то включает запрос подтверждения.
/Z – позволяет копировать данные по сети, кстати, в предыдущих вариантах данной утилиты этого ключа не наблюдалось.
/А – указывает, что файл является текстовым, если мы укажем данный параметр, то копирование прервется на метке конца файла ASCII код 26.
Если же данный параметр указан в самом конце, то эффект совсем другой. Произойдет полное копирование документа, но в копии будет добавлена метка конца файла если ее не было. Как результат, можете попробовать поэкспериментировать с pdf документом (my_file.pdf – размер документа составляет 247217 байт):
copy my_file.pdf/A new_file.pdf – на выходе мы получим документ new_file.pdf размером в 2538 байт.
/B – данный ключ идет по умолчанию и указывает, что файл является бинарным. То есть, происходит копирование всего документа.
/V – данный параметр включает проверку правильности копирования, сравнивая данные после завершения процедуры.
И так командная строка, копирование файлов и парочка примеров:
Копирование через командную строку файла 123.txt из текущего каталога в каталог D:\NEW под тем же именем:
COPY 123.txt D:\NEW
Копирование файла 123.txt из текущего каталога в каталог D:\NEW под новым именем new.txt:
COPY 123.txt D:\NEW\new.txt
Копирование всех документов с расширением txt с диска D:\ в каталог My Data на диске C:
COPY D:\*.txt «С:\My Data»
Допустим, мы находимся в каталоге D:\NEW и нам надо копирнуть в него все данные из каталога C:\DATA, в таком случае достаточно прописать следующий синтаксис:
COPY C:\DATA *.*
Используя командную строку, копируемые файлы можно склеить. Для этих целей достаточно использовать знак плюса «+», например:
COPY 1.txt +2.txt 3.txt– в данном примере содержимое документов 1.txt и 2.txt было объединено в 3.txt. Стоит помнить, что по дефолту, утилита COPY воспринимает данные как текстовые.
Вот пример с двоичными данными:
COPY /В *.dat all.dat – в данном варианте все данные с расширением dat из текущей папки были объединены в один файл all.dat.
Вообще, используя символ плюса «+» и мысли типа «а что если», можно проделать парочку экспериментов. Также стоит помнить ряд моментов:
Если название целевого объекта совпадает с одним из копируемых (кроме первого), то исходное содержимое целевого объекта будет утеряно.
Если имя целевого объекта опущено, то в его качестве будет использован первый объект из списка:.
COPY l.txt+2.txt – тут мы добавили к содержимому первого объекта содержимое второго.
COPY 1.txt +,, – данная конструкция позволяет присвоить объекту 1.txt текущую дату без его модификации.
Утилита COPY по своему первенству содержит ряд недостатков:
- нельзя производить копирование файлов через командную строку с атрибутами скрытый или системный, а также системных и с атрибутом «Только для чтения».
- обрыв всего процесса копирования при встрече с объектом, который в данный момент не поддается копированию.
В связи с такими неудобствами, умные люди подумали, и прибавили букву Х к названию COPY, чем решили массу проблем, создав утилиту XCOPY.
Командная строка REPLACE
Фактически, отличие данной утилиты в том, что она умеет заменять данные. Синтаксис довольно простой и понятный:
REPLACE [диск1:][путь1]имя_файла [диск2:] [путь2] [/А] [/Р] [/R] [/W]
REPLACE [диск1:][путь1]имя_файла [диск2:] [путь2] [/Р][/R][/S][/W][/U]
[диск1:] [путь1]имя_файла – определяем местонахождении копируемого объекта, или объектов.
[диск2:] [путь2] — определяем местонахождении объекта-результата. Как видно, имена замещаемых объектов задавать нельзя.
/А – добавляем в каталог-результат только новые объекты из каталога-результата (без перезаписи). Этот ключ нельзя использовать с ключами /S и / U.
/Р – выводится запрос на подтверждение перед заменой целевого или добавлением исходного файла.
/R – замещение не только обычных, но и защищенных от записи документов.
/S – позволяет производить поиск по всем подкаталогам целевого каталога и заменять файлы с совпадающими именами. Этот ключ нельзя использовать совместно с ключом /А. Поиск в каталогах, заданных параметром путь1, не производится.
/W – ожидание вставки диска перед началом выполнения
/U – режим обновления, то есть будут заменены только те объекты, которые имеют более раннюю дату модификации. Несовместимость с ключом /A.
Replace D:\Data\my_file.txt D:\Work – в папке Work заменяем файл my_file.txt на D:\Data\my_file.txt
При копировании файлов через командную строку посредством утилиты REPLACE, отсутствует возможность обновления скрытых или системных файлов. Для этого надо предварительно сменить их атрибуты.
Спасибо за внимание. Автор блога Владимир Баталий
replace replace
Замена существующих файлов в каталоге. Replace existing files in a directory. При использовании с параметром /a эта команда добавляет новые файлы в каталог вместо того, чтобы заменять существующие файлы. If used with the /a option, this command adds new files to a directory instead of replacing existing files.
Синтаксис Syntax
Параметры Parameters
Параметр Parameter | Описание Description |
---|---|
[ :][ |
]
]
Комментарии Remarks
Так как эта команда добавляет или заменяет файлы, имена файлов отображаются на экране. As this command adds or replaces files, the file names appear on the screen. По завершении этой команды отображается строка сводки в одном из следующих форматов: After this command is done, a summary line is displayed in one of the following formats:
Если вы используете гибкие диски и вам необходимо переключить диски при выполнении этой команды, можно указать параметр командной строки /w , чтобы эта команда ожидает переключения дисков. If you’re using floppy disks and you need to switch disks while running this command, you can specify the /w command-line option so that this command waits for you to switch the disks.
Эту команду нельзя использовать для обновления скрытых файлов или системных файлов. You can’t use this command to update hidden files or system files.
В следующей таблице показан каждый код выхода и краткое описание его значения. The following table shows each exit code and a brief description of its meaning:
Код выхода Exit code | Описание Description |
---|---|
0 0 | Эта команда успешно заменила или добавила файлы. This command successfully replaced or added the files. |
1 1 | Эта команда обнаружила неправильную версию MS-DOS. This command encountered an incorrect version of MS-DOS. |
2 2 | Этой команде не удалось найти исходные файлы. This command couldn’t find the source files. |
3 3 | Этой команде не удалось найти исходный или конечный путь. This command couldn’t find the source or destination path. |
5 5 | У пользователя нет доступа к файлам, которые требуется заменить. The user doesn’t have access to the files that you want to replace. |
8 8 | Недостаточно системной памяти для выполнения команды. There is insufficient system memory to carry out the command. |
11 11 | Пользователь использовал неправильный синтаксис в командной строке. The user used the wrong syntax on the command line. |
Можно использовать параметр ERRORLEVEL в командной строке If в пакетной программе для обработки кодов завершения, возвращаемых этой командой. You can use the ERRORLEVEL parameter on the if command line in a batch program to process exit codes that are returned by this command.