WildCards пошкоджує вихідний файл копіювання, коли вказано ім'я виводу


2

copy create - майже порожній (1K) файл, коли в джерелі використовується wildcard (*?) і вказується ім'я виводу.

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, не додаючи його?

Відповіді:


1

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

Щоб додати файли, вкажіть один файл для призначення, але декілька файлів для джерела (використовуючи символи підстановки чи файл1 + файл2 + файл3).

Якщо формат файлу не підтримує просто з’єднані вихідні файли, користувач повинен пам’ятати про це.

Також відповідь Балі на ваше перше посилання повністю відповідає вашому запитанню.

Інший спосіб вирішення, якщо є лише один вихідний файл з незрозумілим іменем, є:

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

Я не згоден з останнім реченням. Засіб *означає 0 або більше знаків; *?означає одну або кілька знаків, що є суттєвою і корисною різницею.
— серпня 1717 року

Copyне слід вважати, що це "додавання" файлів у цьому випадку, він повинен перевірити & чи дано кілька бінарних файлів, вийти з помилкою: Неможливо об'єднати бінарні файли . Microsoft, таким чином, помилково
— Венсен

1

Одне питання з використанням ваших символів ... Ви копіюєте (потенційно) багато файлів в одну ціль, багато разів переписуючи цей бідний файл, досить марно :). Але це виявило цю цікаву «особливість». Мені спокуса винести свої дискети DOS, щоб перевірити, чи помилка така стара.

Вітаю вас, що знайшли цю цікаву помилку в DIR! Скопійований файл у кінцевому підсумку пошкоджений. Це дуже послідовно, не залежить від перемикачів / D / V і відбувається лише при перезаписі одного і того ж файлу знову і знову. Помилка не з’являється при використанні xcopy, що є хорошою новиною для всіх користувачів Windows.


" Одна проблема з використанням ваших символів " ....... Погоджено, але це не проблема тут , і я не згоден з "... відбувається при перезаписі одного і того ж файлу ...." трапляється вперше , кожен час. & Дякую!
— Венсен

Я грав з ним протягом 20 хвилин добрі хвилини .... використання картки для введення та виводу працює як шарм під програмою win7 / x86. І допомога для / B - це "скопіювати посилання як посилання, а не як його ціль" у звичайному вікні cmd, але ні, як я перевіряв у сеансі cmd VS2008.
— Michaël Roy

Вибачте, я ніколи не звикаю до ключової поведінки на цьому сайті.
— Michaël Roy

Мабуть, ще багато чого ще потрібно дізнатись про копію ... Цікаво, чи можуть нові sdks VS2017 також надавати власну версію, щоб продовжити ...
— Michaël Roy

Помилка copyвважає, що "Бінарні файли" - це файл "ASCII text", коли в джерелі використовуються макіяж-символи, і ви вказуєте ім'я призначення, ось це!
— Венсен

1

copyповинен знати тип файлу: "ASCII текст" /Aабо "Бінарний файл"/B

Бінарний файл /Bпередбачається, якщо ви не комбінуєте файли.
але Windows "припускає", коли ви ставите підстановку в джерело і вказуєте вихідне ім'я, яке ви комбінуєте файли, а використовуйте інтерпретатор "ASCII текст", таким чином, роблячи 1K порожній файл.

Отже, /B Параметр (Показує двійковий файл)
повинен використовуватися при використанні підстановочних кодів у джерелі із вказаним вихідним іменем
у всіх файлах, що не містять текст "ASCII".

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

Назвіть це помилка, дурна функція Майкрософт, але саме так.

Джерело


/ B давно змінив значення "копіювати посилання, а не його ціль". / B втратив значення в DOS 6 і знову з’явився в новому вигляді в Windows 95, якщо моя пам’ять є правильною. Вищезгадана помилка присутня в Windows 7 / x86.
— Michaël Roy

Але мені довелося спробувати перемикач / B, прочитавши ваш коментар. Ви знайшли джерело помилки! Якби у нас був вихідний код .... Схоже, команда MS не дуже добре чистить код. Я цікавлюсь, скільки цих дорогоцінних каменів все ще ховається навколо.
— Michaël Roy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.