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.