xcopy файли в єдиний каталог


21

Я хотів би використовувати xcopy на машині Windows, щоб витягнути всі файли з розширенням .png в єдиний каталог.

Я спробував xcopy C:\folder\*.png /s C:\png\, але він зберігає підкаталоги всередині папки \ (наприклад, у C: \ png, є C: \ png \ a \ b \ c \ img.png), яку я не хочу. Я просто хочу, щоб всі .png всередині C: \ png, не зберігаючи структуру каталогу, що знаходився в папці C: \.


Відповіді:


39

Це можна зробити зі старим добрим for:

for /r C:\Folder %f in (*.png) do @copy "%f" C:\png

Нічого фантазійного.


Це працює! Хочете пояснити, що %fтаке?
bobobobo

Це змінна петля.
Joey

3
Це не спрацювало для мене, я щось отримав f" was unexpected at this time. Перехід %fдо %%fвідпрацьованого. Однак я запускав це в пакетному файлі: Якщо ви використовуєте команду FOR в командному рядку, а не в пакетній програмі, використовуйте лише один відсотковий знак:% G замість %% G. ss64.com/nt/for.html
ta.speot.is

1
Ум, так. Це очікується і саме так, як ви цитували. Звідки я взяв вашу плутанину?
Джої

1
@kayleeFrye_onDeck: Наскільки я знаю, немає спеціальних змінних. Єдине, що спадає на думку, це те, що незнайомі люди forможуть заплутатися у двох dподібних речах %~dd. forДокументація пропонує використовувати великі літери , для змінних , щоб уникнути плутанини, але заміни до сих пір чітко відрізнити від імені змінної, я думаю.
Джої

1

Якщо у вас встановлений Cygwin, це буде завдання для пошуку:

cp `find /cygdrive/c/folder/* -name '*png'` /cygdrive/c/png/

(хоча це матиме проблеми, якщо будь-яка назва файлів має пробіли - ви знайдете якийсь варіант findкоманди, який працюватиме за будь-яких обставин)

Якщо ви працюєте з Vista, 2003 або 2008, то ваш менш зручний, але все ще корисний "forfiles" - ваш друг. Щось на зразок:

FORFILES /P c:\folder\ /M *.png /S /C "cmd /c copy @file c:\png\"

Примітка. Я не перевіряв жодної з перерахованих вище команд, але теоретично вони повинні працювати ...


+1 щойно перевірив, що працює команда FORFILES. Я запустив його двічі, і він скопіював підказку 2-го разу, тому я припускаю, що він просто перезаписується, якщо він знайде дублікати.
hyperslug
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.