El método de Sinan Unur funciona bien.
Sin embargo, tuve algunos problemas con los archivos que estaba transformando.
Otro método es usar Win32 :: OLE y Win32 :: portapapeles como tal:
- Abra el documento de Word
- seleccionar todo el texto
- Copiar en el portapapeles
- Imprimir la contenido del Portapapeles en un archivo de texto
- Vaciar el Portapapeles y cerrar el documento de Word
Basado en el script dado por Sigvald Refsu en http://computer-programming-forum.com/53-perl/c44063de8613483b.htm, se me ocurrió la siguiente secuencia de comandos.
Nota: Elegí guardar el archivo txt con el mismo nombre que el.docx y en la misma carpeta, pero esto se puede cambiar fácilmente
###########################################
use strict;
use File::Spec::Functions qw(catfile);
use FindBin '$Bin';
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Word';
use Win32::Clipboard;
my $monitor_word=0; #set 1 to watch MS Word being opened and closed
sub docx2txt {
##Note: the path shall be in the form "C:\dir\ with\ space\file.docx";
my $docx_file=shift;
#MS Word object
my $Word = Win32::OLE->new('Word.Application', 'Quit') or die "Couldn't run Word";
#Monitor what happens in MS Word
$Word->{Visible} = 1 if $monitor_word;
#Open file
my $Doc = $Word->Documents->Open($docx_file);
with ($Doc, ShowRevisions => 0); #Turn of revision marks
#Select the complete document
$Doc->Select();
my $Range = $Word->Selection();
with ($Range, ExtendMode => 1);
$Range->SelectAll();
#Copy selection to clipboard
$Range->Copy();
#Create txt file
my $txt_file=$docx_file;
$txt_file =~ s/\.docx$/.txt/;
open(TextFile,">$txt_file") or die "Error while trying to write in $txt_file (!$)";
printf TextFile ("%s\n", Win32::Clipboard::Get());
close TextFile;
#Empty the Clipboard (to prevent warning about "huge amount of data in clipboard")
Win32::Clipboard::Set("");
#Close Word file without saving
$Doc->Close({SaveChanges => wdDoNotSaveChanges});
# Disconnect OLE
undef $Word;
}
espero que le puede ayuda.
con tal de que se puede automatizar a través de una tarea programada en una PC de Windows, no importa si la palabra está abierta ... reescribir la pregunta – CheeseConQueso