3

У меня есть около 65000 файлов в 3000 папок в c:\foo\root (то есть, c:\foo\root\folder1 , c:\foo\root\folder2 т.д.). Я хочу скопировать все эти файлы в одну папку c:\All\ .

Я пробовал Robocopy, но он просто делает полную копию (включая каталоги). Если в процессе копирования он сталкивается с файлами с одинаковыми именами, мне нужно переименовать новый файл в temp(2).file или аналогичный, а не просто игнорировать его или перезаписать.

Кто-нибудь знает, как это сделать с помощью командного файла / командной строки? Даже немного C # было бы здорово.

1 ответ1

1

Непонятно, как банкомат, так что это обходной метод ...

Если бы вы заархивировали дерево (используя метод без сжатия, это было бы быстрее), вы могли бы работать с ним двумя способами. Архивируйте дерево (включая подкаталоги) и извлекайте его с помощью буквы "E" (извлечение), а не "X" (файлы eXtract с полным путем), извлеченные файлы будут помещены в один каталог. Другой способ сделать то же самое было бы при создании архива, чтобы сказать ему "исключать пути из имен". Тогда созданный архив будет лишен путей, то есть все файлы будут храниться в одном каталоге в архиве, поэтому при извлечении они будут извлекаться также и таким образом. (Мышление первого метода имеет больше смысла.)

(ARJ может сделать это. Может подумать, что 7z & RAR & ZIP тоже могут?)

"Flatten" было словом, которое я пытался придумать ранее. И с этим программа резервного копирования / синхронизации, вероятно, может быть настроена на "выравнивание" структуры каталогов.

Итак, другие мысли ... Tar & DD? Может быть, это поможет другим придумать лучший ответ, что я не думаю об банкомате.

(Прошло много времени с тех пор, как я использовал Tar, поэтому я могу покинуть базу, но что-то вроде ...)

 tar -cvf c:/foo/roo | tar -xvf -

Архиватор и резервное копирование / синхронизатор должны иметь возможность обрабатывать любые ошибки в автоматическом режиме.
ARJ может. Не знаете про смолу?

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