5

Использование синтаксиса команды копирования DOS для объединения файлов:

copy file1.txt+file2.txt all.txt

Я знаю, что я могу сделать это...

copy file1.txt+file2.txt file1.txt

Это эффективно? Это делает то, что я ожидаю? Это работает, но я хочу знать, действительно ли он добавляет файл file1.txt или копирует file1.txt (плохо), объединяет file2 и затем переименовывает в file1.txt (что неэффективно)?

3 ответа3

9

copy копирует file1.txt и file2.txt в память, объединяет их и записывает в file1.txt . Это не копирование в новый файл, а затем переименование этого файла, так что на самом деле не так много дополнительного дискового ввода-вывода.

Вы также можете использовать type .

type file2.txt >> file1.txt

Оператор >> добавляет текст. Но это, конечно, не будет работать для двоичных файлов.

2

Это эффективно?

Конечно. Однако использование параметра /b может / может повысить производительность, просто объединяя байты вместо обработки файлов как текста. Это особенно заметно при объединении очень больших текстовых файлов.

Это делает то, что я ожидаю?

Обычно да, но если файл был создан в Linux, Mac или другой системе с различными разделителями файлов / строк, то он может дать неожиданные результаты. В целом, рекомендуется использовать ключ /b даже для текстовых файлов.

Я хочу знать, действительно ли он добавляется в file1.txt или копирует file1.txt (плохо), объединяет file2 и затем переименовывает в file1.txt (что неэффективно)?

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

0

Если они имеют одинаковое расширение, вы можете сделать это -

введите *.txt >> fileout.tmp .

Затем переименуйте fileout.tmp в правильное расширение.

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