Windows "копия" с заполнителями добавляет 1 байт к выходным файлам - PullRequest
2 голосов
/ 18 августа 2011

Попробуйте это:

echo Test > a1.txt
copy a1.txt b.txt
copy a?.txt c.txt

Файл c.txt будет на 1 байт больше, чем b.txt. Почему это так?

Обход:

for %i in (a?.txt) do copy %i d.txt

d.txt будет иметь правильный размер.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2012

copy /B a?.txt c.txt, кажется, работает.B для двоичного файла, поэтому символ конца файла не добавляется.

1 голос
/ 17 января 2019

Вы предоставили несколько исходных файлов из-за подстановочного знака ? (даже если имеется только один соответствующий файл) и отдельного файла назначения, который позволяет copy добавлять исходные файлы.В этом режиме copy обрабатывает исходные и конечные файлы как текстовые файлы ASCII (как если бы вы указали переключатель /A), поэтому он добавляет символ конца файла (EOF) (код 26 dec. =0x1A hex.) И обрезает каждый исходный файл до (первого) символа EOF.Добавление переключателя /B предотвращает:

copy /B a?.txt c.txt

Учитывая, что положение переключателей /A и /B имеет значение, вы можете:

  • определяет способ обработки файлов в глобальном масштабе при предоставлении ключей до первой спецификации файла:

    rem // Treat all files as binary ones:
    copy /B a.txt + b.txt c.txt
    
  • изменяет путь индивидуально:

    rem /* Treat `a.txt` as ASCII text file (default for multiple sources),
    rem    then treat `b.txt` and `c.txt` as binary files: */
    copy a.txt + b.txt /B c.txt
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...