Вот такая задача была поставлена: есть многогиговая папка с затейливо вложенными подпапками (всего их около 300 штук), которые содержат помимо всего прочего примерно 2800 файлов в формате *.doc (MS Word 2003)
Требуется аккуратно все файлы переделать прямо на месте в *.docx (MS Word 2007+). Задание срочное и разовое, бюджет не выделен. И поручить некому, так что я, как Зорг из "Пятого элемента", вооружился принципом "Если хочешь что-нибудь сделать, сделай это сам".
Что ж, посмотрим, какие есть пути решения.
Перебрать все папки и сконвертировать каждый файл ручками (Open... Save as...) с последующим удалением оригинала - ну, это нереально, конечно. В ту же корзинку Open - File - Info - Convert - Save для каждого файла.
Рукописный VBA скрипт после некоторых колебаний тоже был отброшен. Поскольку задание всё же разовое.
Фриварные программы отчего-то искренне думают, что все ворды для конвертирования могут лежать только в какой-то одной папке. Много папок за один раз никак не хотят. Ну и не надо.
Среди платных прог нашлась одна полностью подходящая
Batch DOC and DOCX Converter. Обрабатывает вложенные подпапки, работает аккуратно и впечатляюще быстро. Но стоит лицензия на один комп $179. А задача, напоминаю, разовая, и бюджета нет. Кряков и кидженов на программу тоже не нашлось (и хорошо).
Ну что, смотрим, как сделан триал. По времени это 7 дней, по количеству файлов ограничений нет, что уже неплохо.
При конвертировании триал:
- добавляет к имени файла приставку -Unlicensed-, то есть foo.doc преобразуется в -Unlicensed-foo.docx
- рандомные файлы пропускает в обработке, в логе пишет "Skipped, please register!". Пропускается в среднем 2-3% файлов.
Соответственно решение было принято такое, методом грубой силы:
1) Запускаем папку на обработку, пока она в фоне работает, занимаемся другими делами
2) Смотрим, сколько у нас файлов *.doc и *.docx. Если числа разные, повторяем обработку еще раз.
У меня уже после второго раза получилось обработать все файлы. Все заняло пару дней, причем сам я особо не напрягался.
Приставка -Unlicensed- была убрана за минуту через тотал коммандер. Еще минуту заняло удаление файлов в старом формате.
Наверное, можно было бы и как-то более эффективно все это сделать, но я думаю, нормально вышло.
UPD. Фриварных программ, умеющих нормально работать с командной строкой, я тоже не нашел.
UPD2. Коллективный разум в лице
slavka дал
ссылку на stackoverflow, где обновление проводится вообще через штатную M$ программу wordconv. Красота!