[BATCH] Agregar texto en documento MSOffice Doc

Iniciado por n4pst3r, 15 Abril 2014, 02:58 AM

0 Miembros y 2 Visitantes están viendo este tema.

n4pst3r

Hola a todos,

Hoy quisiera que me colaboraran con lo siguiente:

1. tengo un archivo llamado Targets.txt el cual contiene 6 direcciones ip
2. tengo 5 archivos con distintos nombres con extension .doc

la pregunta es, como se puede realizar un bat que lea las 6 direcciones de Targets.txt y las ingrese en cada .doc ?

Gracias a todos

Eleкtro

#1
1. Está prohibido los títulos tipo "ayuda", un título debe ser descriptivo, fíjate en la edición del nuevo título.




Cita de: n4pst3r en 15 Abril 2014, 02:58 AMla pregunta es, como se puede realizar un bat que lea las 6 direcciones de Targets.txt y las ingrese en cada .doc ?

No puedes realizar esa operación de esa manera, un documento doc/docx es un archivo binario, no un archivo de texto plano, olvídate del simple Batch.

Aquí está explicado el modo de leer un archivo DOC de manera Raw (byte a byte): http://msdn.microsoft.com/en-us/library/gg615596%28v=office.14%29.aspx#UnderstandMS_DOC_ExtractText

Necesitas usar un lenguaje (un lenguaje de verdad, no Batch) orientado a objetos, que esté capacitado para la tarea y utilizaar las Classes que ofrezca el lenguaje, el componene ActiveX de Word o librerías de terceros que sean capaces de manipular documentos de Office, o como última opción puede añadir bytes de forma manual al documentos.

VisualBasic.NET sería una gran opción al ser de Microsoft, compatibilidad y sencillez de uso gracias a sus Classes.

Otra opción más simple sería usar VisualBasicScript.

Cita de: http://www.activexperts.com/activmonitor/windowsmanagement/scripts/msoffice/word/#AddFormattedTWD.htm
Add Formatted Text to a Word Document

Código (vb) [Seleccionar]
Set objWord = CreateObject("Word.Application")

objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection

objSelection.Font.Name = "Arial"
objSelection.Font.Size = "18"
objSelection.TypeText "Network Adapter Report"
objSelection.TypeParagraph()

objSelection.Font.Size = "14"
objSelection.TypeText "" & Date()
objSelection.TypeParagraph()

Cabe mencionar que un requisito esencial (a menos que se usen librerías de terceros capacitadas) es disponer de MSWord instalado (instalación original, nada de portables), ya que este te instala los controles ActiveX (Word.Application) para la manipulación de documentos usando el lenguaje VBS.

Yo no tengo el Office instalado porque no me agrada el producto, así que si vas a usar VisualBasicScript yo solo te puedo indicar el modo de leer y procesar las direcciones IP del archivo de texto que las contiene:

Código (vb) [Seleccionar]
File = ".\Targets.txt"
IPS  = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(File, 1).ReadAll, VBCrlf)

For Each IP in IPS
   Wscript.Echo IP
Next

Wscript.Quit(0)


Saludos








n4pst3r

Gracias Eleкtro. fue muy clara tu repuesta, saludos