стрелка → символ, добавляемый к файлам в сценарии .bat - PullRequest
10 голосов
/ 11 июня 2011

Следующий скрипт получает все файлы с расширением .new_tmp и копирует их в файл с тем же именем, но без расширения .new_tmp. Кроме того, комментарий помещается вверху файла, а файл .new_tmp удаляется.

echo ^<?php /* > start.tmp
echo */ ?^> > end.tmp
for /R "./mydir" %%I in (*.new_tmp) do (
    copy start.tmp+license.txt+end.tmp+%%I worker.tmp
    move worker.tmp %%~pI%%~nI
    del %%I
)

Проблема в том, что стрелка вправо → добавляется в конец всех файлов

Почему этот символ добавляется в конец всех файлов?

UPDATE Я попробовал это на гораздо более простом примере и получил те же результаты

copy NUL worker.tmp
copy worker.tmp + license.txt + license.txt + license.txt

Та же проблема, стрелка в конце ...

Я работаю под Windows 7

Ответы [ 2 ]

24 голосов
/ 11 июня 2011

Стрелка - это символ CTRL-Z ascii, который добавляется командой COPY при использовании для объединения файлов с параметром +.

Чтобы запретить добавлению CTRL-Z COPYсимвол, используйте COPY /B для двоичной копии.

Итак, ваша команда будет

COPY /B start.tmp+license.txt+end.tmp+%%I worker.tmp
1 голос
/ 07 августа 2013

Когда / b следует за пунктом назначения, при копировании не добавляется символ конца файла.

Вот как бы я решил проблему:

COPY start.tmp+license.txt+end.tmp+%%I worker.tmp /B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...