2

copy создать почти пустой (1K) файл, когда подстановочный знак (*?) используется в источнике и указывается имя вывода.

copy /D /V *?ample.png %homepath%/example.png

это работает для некоторых типов файлов (.txt .rtf)
copy /D /V *?ample.txt %TEMP%\example.txt

интересно, подстановочные знаки в источнике и месте назначения исправляют это,
copy "*xample.pdf" "%TEMP%/*xample.pdf"
но портит имя файла, оно приходит: le.pdfxample.pdf

Это ошибка или плохой синтаксис? я в тупике.

я нахожусь на Windows 7 x86_64
связанные вопросы
Использование wildard с командой DOS COPY приводит к повреждению файла назначения
Как скопировать файл с использованием подстановочного знака в Windows без добавления?

3 ответа3

1

Я думаю, что это (неправильно) используемая функция.
Моя help copy Windown 10 гласит:

Чтобы добавить файлы, укажите один файл для места назначения, но несколько файлов для источника (используя подстановочные знаки или формат file1+file2+file3).

Если формат файла не поддерживает просто сцепленные исходные файлы, пользователь должен помнить об этом.

Также ответ Бали на вашу первую ссылку полностью отвечает на ваш вопрос.

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

for %A in (*?ample.png) Do copy "%A"  "%homepath%/example.png"
1

copy должна знать тип файла: "ASCII текст" /A или "Двоичный файл" /B

Двоичный файл /B предполагается, если вы не объединяете файлы.
но Windows "предполагает", когда вы помещаете подстановочные знаки в источник и указываете выходное имя, которое вы комбинируете, и используете интерпретатор "ASCII текст", поэтому создаете пустой файл размером 1 КБ.

Таким образом, параметр /B (указывает на двоичный файл)
должен использоваться при использовании подстановочных знаков в источнике с указанным именем вывода,
на всех файлах, не относящихся к тексту ASCII.

copy /B /D /V *?ample.png %homepath%/example.png

Назовите это «Ошибка», глупая функция Microsoft, но так оно и есть.

Источник

1

Одна проблема с использованием символов подстановки ... Вы копируете (потенциально) много файлов в одну цель, много раз бесполезно перезаписывая этот плохой файл :). Но это действительно выявило эту интересную «особенность». Я испытываю желание принести мои дискеты DOS, чтобы проверить, старая ли ошибка.

Поздравляю вас с обнаружением этой интересной ошибки в DIR! Скопированный файл в конечном итоге поврежден. Это очень согласованно, не зависит от параметров /D /V и происходит только при перезаписи одного и того же файла снова и снова. Ошибка не появляется при использовании xcopy, что является хорошей новостью для всех пользователей Windows.

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