Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: n4pst3r en 15 Abril 2014, 02:58 am



Título: [BATCH] Agregar texto en documento MSOffice Doc
Publicado por: n4pst3r en 15 Abril 2014, 02:58 am
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


Título: Re: Ayuda con Batch
Publicado por: Eleкtro en 15 Abril 2014, 04:29 am
1. Está prohibido los títulos tipo "ayuda", un título debe ser descriptivo, fíjate en la edición del nuevo título.



la 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
  1. Set objWord = CreateObject("Word.Application")
  2.  
  3. objWord.Visible = True
  4. Set objDoc = objWord.Documents.Add()
  5. Set objSelection = objWord.Selection
  6.  
  7. objSelection.Font.Name = "Arial"
  8. objSelection.Font.Size = "18"
  9. objSelection.TypeText "Network Adapter Report"
  10. objSelection.TypeParagraph()
  11.  
  12. objSelection.Font.Size = "14"
  13. objSelection.TypeText "" & Date()
  14. 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
  1. File = ".\Targets.txt"
  2. IPS  = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(File, 1).ReadAll, VBCrlf)
  3.  
  4. For Each IP in IPS
  5.    Wscript.Echo IP
  6. Next
  7.  
  8. Wscript.Quit(0)

Saludos


Título: Re: [BATCH] Agregar texto en documento MSOffice Doc
Publicado por: n4pst3r en 15 Abril 2014, 04:45 am
Gracias Eleкtro. fue muy clara tu repuesta, saludos