Как добавить в файл команду COPY

Я использую Windows 7 Ultimate x64, но мой опыт восходит к DOS 3.0.

Поскольку, как и в DOS 3.1, вы можете добавить файл к другому с помощью команды COPY:

COPY FILE1+FILE2=FILE1

Делает ненужным временный FILE3.

Это была очень удобная команда, поскольку всякий раз, когда вы добавляли новую программу, вам часто приходилось обновлять файлы CONFIG.SYS и AUTOEXEC.BAT.

Раньше также считалось, что правильный порядок был важен, иначе вы получили бы пустой FILE1.

Но сегодня, когда я попробовал это, он оставил FILE1 нетронутым, и когда я изменил порядок, он (по понятным причинам) сделал FILE1 копию FILE2.

Кто-нибудь знает, был ли он заменен другим методом и когда это изменение произошло?

ИЗМЕНИТЬ:

Я провел больше тестов, и, как ни странно, хотя приведенный выше код не будет работать, вы все равно можете скопировать его из консоли и добавить его в существующий файл, например:

copy file1+con=file1
Type some text to append to file1
^Z ([CTRL]+Z the End Of File character)

Мне интересно, моя версия Windows как-то испорчена. Может ли кто-нибудь повторить мои выводы?

ИЗМЕНИТЬ:

Работает на 95/98/ME/2000/XP/XP Mode/7 Professional x64/8 x64. Так что я думаю, что это не проблема 7 Ultimate x64, а проблема с моей машиной.

* Вздох *

ИЗМЕНИТЬ:

Последнее редактирование, обещаю. :)

Это была не проблема с моей машиной, это была проблема с File1. По-видимому, когда я впервые добавил к нему File2, [CTRL]+Z (символ EOF) никогда не перезаписывался, в результате чего файл выглядел следующим образом:

Original Data
Original Data
[EOF]
Appended Data
Appended Data
Appended Data

Вы можете продублировать это самостоятельно, выполнив следующий эксперимент из командной строки. (где ^Z — это символ [CTRL]+Z )

В командной строке введите:

copy con file1
File One
^Z^Z

copy con file2
File Two
^Z

copy con file3
File Three
^Z

copy file1+file2=file1

copy file2+file3=file2

TYPE file1
TYPE file2

Ты увидишь:

file1

File One

file2

File Two
File Three

Вы можете type file2 >> file1 или использовать почти любой другой метод объединения файлов, и когда вы наберете file1, он все равно будет содержать только File One. НО, если вы используете FIND "searchterm" file для анализа файла, он покажет вам, что НА САМОМ ДЕЛЕ происходит. В этом случае введите:

FIND " " file1

И вы будете вознаграждены:

---------- FILE1
File One
→File Two

person James K    schedule 09.09.2012    source источник


Ответы (9)


Windows 8 x86:

Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.

C:\Users\Nikos>echo foo>file1

C:\Users\Nikos>echo bar>file2

C:\Users\Nikos>copy /b file1 + file2 file1
file1
file2
        1 file(s) copied.

C:\Users\Nikos>type file1
foo
bar
person nikos1993pl    schedule 09.09.2012
comment
что вы получаете при копировании foo+bar=foo? - person nikos1993pl; 10.09.2012
comment
Я получаю оригинальную версию foo. - person James K; 10.09.2012
comment
Я убедился, что copy file1+file2=file1 работает на Windows 7 Professional x64, поэтому я считаю, что это, вероятно, моя машина. - person James K; 10.09.2012
comment
Спасибо, что помогли мне понять это. :) - person James K; 10.09.2012
comment
Есть ли способ снова получить файл2 и файл1 с помощью команды ?? - person swapnil gandhi; 25.02.2016
comment
чтобы получить файлы, вам понадобится какой-то инструмент для разделения и знать длину файлов в нем - person Lassi Kinnunen; 25.02.2019

А как насчет type file2 >> file1

person nikos1993pl    schedule 09.09.2012
comment
@JamesK Вы никогда не указывали двоичный код в своем вопросе. Что именно вы хотите сделать тогда? - person Eitan T; 10.09.2012
comment
@EitanT - мне просто интересно, исчезла ли эта функция из Windows, потому что она более эффективна, чем любой другой встроенный метод объединения файлов, двоичного ИЛИ текста. - person James K; 10.09.2012
comment
На самом деле это тоже не работает. Проблема в том, что файл имеет два символа EOF в конце, поэтому при добавлении практически любым методом сохраняется один символ EOF с добавленным текстом, идущим после него. - person James K; 10.09.2012

Ответ на вопрос: Как добавить в файл команду COPY.

ВНИМАНИЕ: если у вас есть список файлов, которые вы хотите объединить с помощью команды COPY, это просто, но потенциально может уничтожить ваши файлы.

Опасный путь:

copy /b one + two + three -- добавит содержимое двух и трех к файлу один . Таким образом, исходный теперь содержит содержимое 3 файлов в правильной последовательности. Если в процессе копирования что-то пойдет не так, у вас не будет возможности восстановить оригинал, так как он будет поврежден, и ваши данные будут по существу потеряны. Почти никогда нет причин использовать этот способ.

Безопасный способ:

copy /b one + two new_filename -- объединит 2 файла (конечно, вы можете указать более двух), создав имя new_filename, содержащее один и два в правильной последовательности, и оставив исходные файлы нетронутыми.

person Emil    schedule 14.05.2017
comment
Для меня это пока лучшее решение. Я хочу добавить один текстовый файл в другой. Это самый простой способ: скопировать destin_file new_file добавить new_file в destin_file - person Doug Null; 07.10.2017
comment
@DougNull На самом деле это не сработает. Если у вас есть только 2 таких файла: копировать Файл_1 Файл2, что произойдет, так это копирование не будет делать добавление, оно создаст копию Файл1 и назовет ее Файл2. Если File2 существует, он перезапишет его. Я обновил свой ответ на сценарий с двумя файлами - person Emil; 09.10.2017

убедитесь, что вы начинаете со свежих файлов, которые вы никогда не пытались копировать.
Я только что обнаружил, что на моем (XP sp3) copy a+b a без /b добавляется 1A (SUB) в конец файла, что делает все, что после него, исчезает из вывода type (но more покажет). Copy /b a+b a работает.

person wmz    schedule 09.09.2012
comment
Да, я смог подтвердить, что это работает на XP. Во всяком случае, режим XP. - person James K; 10.09.2012

Вы пробовали copy /b file1 + file2 file1

person nikos1993pl    schedule 09.09.2012
comment
Да. Я пробовал каждую итерацию, о которой только мог подумать, и каждую, с которой я сталкивался. - person James K; 10.09.2012

copy /b input1 + input2 output
del input1
ren output input1
Может это? :П

person nikos1993pl    schedule 09.09.2012
comment
Конечно, даже copy /b file1 + file2 file3 move file3 file1 работает. Я не пытаюсь заменить функциональность, я пытаюсь выяснить, была ли она удалена из команды COPY (и когда), или мой компьютер испорчен. - person James K; 10.09.2012

Ждать! Есть еще! (Вин7 Про)

>ver

Microsoft Windows [Version 6.1.7601]

>copy file.a.txt + file.b.txt file.ab.txt
file.a.txt
1 file(s) copied

>copy fileA.txt + fileB.txt fileAB.txt
fileA.txt
fileB.txt
1 files(s) copied

Не считая уведомления «1 файл(ы) скопирован», он просто не любит файлы со смешными именами.

person david    schedule 28.08.2015

Чтобы скопировать в бинарный файл...

Поместите все файлы в одну папку, например. G:\Files

g:
cd Files
copy /B *.* TargetFilename.ext

и .ext - это тип требуемого файла

person Nigel    schedule 23.01.2019

  1. Поместите все файлы в одну папку.
  2. copy *.* ´target.ext'
  3. ????
  4. Выгода!
person Michael Cram    schedule 17.10.2014