Пакетне перетворення файлів .doc в .txt (звичайний текст ascii) та / або .html рекурсивно у папки та підпапки, Windows та Mac?


2

Чи є інструмент для цього. Я бачив деякі інструменти Python / Java для автоматизації OpenOffice, але хто-небудь надійно написав це, щоб зробити більше одного файлу, і повторити повтор через дерево папок / директорій з .doc файлами, розміщуючи перетворені .txt та .html файли поруч до оригінального файлу в його місці.

Відповіді:


3

Linux / Unix

Я знаю два інструменти Unix:

  • catdoc
  • antiword

Ви можете просто використовувати findдля рекурсивної папки

find . -name "*.doc" -exec <command> {} \;

Де <command>відповідні дії для перетворення .doc-файлу у .txt-файл, використовуючи catdocабо antiword.

Mac OS X

Ви можете використовувати ті самі інструменти, але вам доведеться встановлювати їх за допомогою, наприклад, Homebrew . Для цього введіть у Термінал:

ruby -e "$(curl -fsSL https://gist.github.com/raw/323731/install_homebrew.rb)"

І потім:

brew install catdoc
brew install antiword

+1 для рішення. Що стосується питання, Window або Mac, будь ласка, але у мене також є Ubuntu, тому сподіваюся, що зможете використовувати ваше рішення. Я перегляну його, спробую, і якщо він спрацює, то я прийму вашу відповідь. Дякую.
therobyouknow

1
Я додавав інструкції з установки ОС X в дописі. Я ще не пробував цю <command>частину, але я можу розібратися в цьому, якщо у вас є якісь проблеми.
slhck

1

@slhck ваше рішення майже працює, але вихід - на дисплей / STDOUT з усіма файлами, об'єднаними разом. Мені потрібні окремі .txt файли як вихід. Причина в тому, що ми не враховуємо ім'я файлу у висновку.

Щоб подолати необхідність переходу ієрархії папок. Якщо я використовую пошук Windows для * .doc, а потім скопіюю результати в папку, щоб розмістити їх в одній папці, розрівняти, я можу завантажитися в Ubuntu і виконати наступне.

(У мене є десь фрагмент коду з файлом / папками, який я викопаю і додаю пізніше, якщо час.) Але поки досить просто вирівнювання ієрахії файлів, як зазначено вище, досить добре.

До речі, catdoc працює краще, ніж антиворд, тому що antiword скаржиться, що деякі файли не є текстовими документами, це, як правило, файли .doc з форматуванням та блоками тексту, організованими як кадри в документі. catdoc, здається, перетворює всі мої документи.

#!/usr/bin/perl -w

 use File::Basename;

 my $okFiles = "";
 my $couldntGet = "";

 @files = <*>;
 foreach $file (@files) 
 {
   if ( $file =~ m/\.doc/ )
   { 
     my ( $filenameOnly, $dir, $ext ) = fileparse($file, qr/\.[^.]*/);
     if ( ( defined $filenameOnly ) && ( defined $ext ) )
     {
       $okFiles .= "file: ".$file." filename only:".$filenameOnly." extension:".$ext."\n";

       system( "catdoc \"".$file."\" > \"".$filenameOnly.".txt\"" );
     }
     else
     {
       $couldntGet .= "*file: ".$file." - couldn't get filename only and extension\n";
     }
   }

   print $okFiles;

   print $couldntGet;
 } 

0

catdoc та antiword мають дуже обмежену підтримку формату файлів, остання версія, яку вони розуміють, - Word 2000.

Я знаю, що ви можете скриптувати LibreOffice, щоб конвертувати будь-які файли, які він розуміє, у текст або pdf (це те, що робить MediaGoblin), але я не знаю, як саме це зробити.

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