BorlandIMHO
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору GCRaistlin Цитата: Производительность ужасающая, | Зависит от общего количества файлов/папок, "перебираемых" командой dir... На большой файлопомойке и по тонкому каналу - да, будет не просто долго, а мучительно долго. Но сомневаюсь, чтоб речь шла о таких условиях... Есть и другое лобовое решение: сделать отдельные cmd для копирования файла и каталога, а определять что запускать при помощи forfiles: Код: forfiles /M "%name%" /C "cmd /c if @isdir==TRUE call copydir.cmd @file else call copyfile.cmd @file" | Но при этом появляются "лишние" скрипты... Да и уверенности, что forfiles отработает существенно быстрее for+dir, у меня нет... А опыты ставить лень.  И всё же forfiles : Код: forfiles /M "%name%" /C "cmd /c if @isdir==TRUE {здесь команда копирования для папки @file} else {здесь команда копирования для файла @file}" | Внимание! В командах копирования спецсимволы потребуется заменить их шестнадцатеричными кодами! (Это ограничение forfiles). Например, вместо двойной кавычки (") - 0x22 Насколько это быстрее, чем for+dir - по-прежнему не уверен... И что получится при наличии "шестнадцатеричного кода" (0xцифры) непосредственно в именах каталогов в команде - не уверен, но похоже будут косяки... Разве что посимвольно заменять такие участки опять же их шестнадцатеричными кодами... Например, "0x22" в команде/именах (в т.ч. значениях переменных окружения) придётся заменять на "0x300x780x320x32".
| Всего записей: 2089 | Зарегистр. 12-10-2006 | Отправлено: 02:58 12-12-2019 | Исправлено: BorlandIMHO, 03:30 12-12-2019 |
|