Причина, по которой вы видите эту проблему, заключается в том, что шаблон с подстановочными знаками переключает COPY
команду в режим конкатенации, который предназначен для простых текстовых файлов ASCII. В режиме ASCII некоторые данные в двоичных файлах выглядят как символ «конец файла».
Файлы Excel .XLSX - это, по сути, Zip-архивы с другим расширением, а Zip-архивы - это двоичные файлы, а не ASCII. Команда COPY
обрабатывает этот двоичный файл как ASCII-файлы и пытается объединить содержимое без чего-либо.
Можно подумать, что объединение файла без чего-либо даст вам тот же файл, с которого вы начали, но не в этом случае.
Команда COPY
продолжает обрабатывать файл только до тех пор, пока он не достигнет символа конца файла (EOF) . Как только он достигает этого символа, он переходит к следующему файлу. (В этом случае обработка полностью прекращается.)
Ваши двоичные файлы Excel содержат данные, которые при преобразовании в ASCII представляют символы EOF, и поэтому конкатенация файла заканчивается раньше, чем ожидалось.
Чтобы проиллюстрировать это, я использовал вашу COPY
команду для объединения 7zip-файла с пустым файлом Excel (я просто переименовал их в file_1.xlsx
and file_2.xlsx
). Я открыл 7zip-файл и выходной файл в Notepad ++ и сравнил содержимое с помощью WinMerge.
Как вы можете видеть на изображении, два файла идентичны вплоть до (1A)
символа.
Затем я объединил два простых текстовых файла, которые работали безупречно. Однако, как только я вставил этот (1A)
символ (который отображается в Notepad ++ как (sub)
) в один из текстовых файлов, я смог подтвердить, что COPY
команда остановилась именно в этот момент и перешел к следующему файлу.