Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: palophp en 17 Octubre 2016, 20:29 pm



Título: Crear y Eliminar fichero txt en el mismo script
Publicado por: palophp en 17 Octubre 2016, 20:29 pm
Hola.
He creado un script para realizar una consulta LDAP para obtener todos los equipos y me los escribe en un fichero txt.
Luego voy recorriendo equipo por equipo para ver si hace ping. Aquellos que me hace ping los escribo en otro txt.
Ahora lo que quiero es borrar el fichero txt del principio donde he guardado la consulta al Directorio Activo pero no lo consigo.

He probado a borrar ficheros y si que lo consigo, pero no cuando los creo y elimino en el mismo script.
 
Set fso = CreateObject("Scripting.FileSystemObject")
... y todo el codigo
y al finalizar pongo:
fso.DeleteFile "C:\rutaDelFichero.txt"

Y no me lo borra, me lo sigue manteniendo....


Título: Re: Crear y Eliminar fichero txt en el mismo script
Publicado por: okik en 18 Octubre 2016, 20:47 pm
Hazlo  así
Código
  1. Set delFile = fso.GetFile(FileName)
  2. delFile.Delete


ejemplo
Código
  1. Dim FilenName As String
  2. Dim fso As Object
  3. Dim MyFile As Object
  4. Dim delFile As Object
  5. FileName = "D:\testfile.txt"
  6.  
  7. Set fso = CreateObject("Scripting.FileSystemObject")
  8. Set MyFile = fso.CreateTextFile("D:\testfile.txt", True)
  9. MyFile.WriteLine "Hello world!"
  10. MyFile.Close
  11.  
  12.  
  13. Set delFile = fso.GetFile(FileName)
  14. delFile.Delete


Título: Re: Crear y Eliminar fichero txt en el mismo script
Publicado por: palophp en 18 Octubre 2016, 21:43 pm
Hola, muchísimas gracias por tu aportación. Lo he probado pero no hay manera.
Seguro que mi codigo tiene muchos errores, porque estoy iniciándome.
Te pongo mi código por si lo pudieras mirar:

Código
  1. '------------------------SCRIPT APAGADO EQUIPOS
  2. Dim FicheroOriginal
  3. Dim objFSO_Lista_Equipos_LDAP
  4. Dim objLista_Equipos
  5. Dim delFile
  6. FicheroOriginal = "C:\Users\toshiba\Desktop\apagadoEquipos.txt"
  7.  
  8. Set objFSO_Lista_Equipos_LDAP=CreateObject("Scripting.FileSystemObject")
  9.  
  10. '-----------------------CONSULTA LDAP PARA OBTENER LOS NOMBRES DE LOS EQUIPOS
  11.  
  12. 'Comprobación de la existencia del Fichero
  13. If  objFSO_Lista_Equipos_LDAP.FileExists (FicheroOriginal) Then
  14. Set objLista_Equipos = objFSO_Lista_Equipos_LDAP.CreateTextFile (FicheroOriginal) ' Se machaca automaticamente cada vez
  15. Else
  16. Set objLista_Equipos = objFSO_Lista_Equipos_LDAP.CreateTextFile (FicheroOriginal) ' Creación del Fichero
  17. End If
  18.  
  19. On Error Resume Next
  20. 'Conectar con LDAP como administrador
  21. Set objComp = GetObject("LDAP:")
  22.  
  23. 'Validación en el Directorio Activo
  24. Set ou = objComp.OpenDSObject("LDAP://palo.age/OU=Domain Controllers, DC=palo,DC=age", "toshiba", "I2016", 1)
  25.  
  26. 'Bucle para obtener todos los Equipos de Sanidad e irlos escribiendo en el fichero
  27. For Each obj In ou
  28. objLista_Equipos.WriteLine (obj.cn)
  29. Next
  30.  
  31. '-------------------------COMPROBACION DEL PING A LOS EQUIPOS
  32.  
  33. Function responde_al_ping (StrEquipo)
  34.  
  35. strComputer = "."
  36.  
  37. 'Variable para obtener los permisos remotamente = admin
  38. Set objWMIService = GetObject("winmgmts:" _
  39.    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  40.  
  41. 'Variable Ping Equipos
  42. Set pingEquipos = objWMIService.ExecQuery _
  43.    ("Select * from Win32_PingStatus Where Address = '" & StrEquipo &".palo.age" & "'")
  44.  
  45. For Each objComputer in pingEquipos
  46.    If objComputer.StatusCode = 0 Then
  47.  
  48.    responde_al_ping = True
  49.    Else
  50.  
  51.    responde_al_ping = false
  52.   End If
  53. Next
  54.  
  55. End Function
  56.  
  57. Const ForReading = 1, ForWriting = 2
  58. Dim TabStop, NewLine
  59. TabStop = Chr(9)
  60. NewLine = Chr(10)
  61.  
  62. 'Variable Fecha
  63. MyDate = Replace(Date, "/", "-")
  64.  
  65. Set objFichero_Log = CreateObject("Scripting.FileSystemObject")
  66. Set objConsulta_PING = objFSO_Lista_Equipos_LDAP.OpenTextFile("C:\Users\toshiba\Desktop\apagadoEquipos.txt", ForReading)
  67. Set objConsulta_PING2 = objFichero_Log.OpenTextFile("C:\Users\toshiba\Desktop\" & mydate & "_Log.txt", ForWriting, True)
  68. Do Until objConsulta_PING.AtEndOfStream
  69. StrEquipo = objConsulta_PING.ReadLine
  70.  
  71. If responde_al_ping(StrEquipo) then
  72. 'Fichero Log que almacena los Equipos que se van apagando
  73. For Each obj In ou
  74. objConsulta_PING2.WriteLine (StrEquipo & TabStop & obj.managedby & " " & "Hace PING")
  75. Next
  76.  
  77. 'Establecemos control de errores
  78. On Error Resume Next
  79.  
  80. 'Variable para obtener los permisos remotamente = admin
  81.    Set objWMIService = GetObject("winmgmts:" _
  82. & "{impersonationLevel=impersonate,(Shutdown)}!\\" & StrEquipo &".palo.age" & "\root\cimv2")
  83.  
  84. Set colOperatingSystems = objWMIService.ExecQuery _
  85. ("Select * from Win32_OperatingSystem")
  86.    For Each objOperatingSystem in colOperatingSystems
  87.        ObjOperatingSystem.Win32Shutdown(1)
  88. Next
  89.  
  90. else
  91.    objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
  92. end if
  93. Loop
  94.  
  95. 'Borrar Fichero con todos los EQUIPOS
  96. Set delFile = objFSO_Lista_Equipos_LDAP.GetFile(FicheroOriginal)
  97. delFile.Delete
  98.  
  99.  


Título: Re: Crear y Eliminar fichero txt en el mismo script
Publicado por: okik en 18 Octubre 2016, 21:53 pm
Te has fijado que he puesto:
Código:
MyFile.Close

Sin no cierras el archivo no lo podrás borrar

Código
  1. objLista_Equipos.Close
  2. Set delFile = objFSO_Lista_Equipos_LDAP.GetFile(FicheroOriginal)
  3. delFile.Delete
  4.  


Título: Re: Crear y Eliminar fichero txt en el mismo script
Publicado por: palophp en 18 Octubre 2016, 22:02 pm
Lo acabo de añadir y sigue igual...
He probado tu codigo aparte y si que me funciona, pero modificando el mio y añadiendo lo
tuyo nada de nada  :(


Título: Re: Crear y Eliminar fichero txt en el mismo script
Publicado por: okik en 18 Octubre 2016, 22:06 pm
quizás sea por el bucle Do/Loop,  quítalo momentáneamente y dale al código a ver si te lo borra




Yo te he puesto
Citar
objLista_Equipos.Close

Porque no me había fijado que tienes mezclado tres partes de código.  objLista_Equipos lo tienes declarado en otra parte. Que lio.

sería

Código:
objConsulta_PING.Close
Set delFile = objFSO_Lista_Equipos_LDAP.GetFile(FicheroOriginal)
delFile.Delete


Título: Re: Crear y Eliminar fichero txt en el mismo script
Publicado por: palophp en 18 Octubre 2016, 22:23 pm
Que va, he quitado el bucle y sigue igual.
Voy a mirarlo de nuevo, pero me lo he mirado mil veces y no hay manera.
Muchas gracias por tu ayuda.


Título: Re: Crear y Eliminar fichero txt en el mismo script
Publicado por: okik en 18 Octubre 2016, 22:29 pm
Que va, he quitado el bucle y sigue igual.
Voy a mirarlo de nuevo, pero me lo he mirado mil veces y no hay manera.
Muchas gracias por tu ayuda.

Estaba editando mientras respondias mira

el archivo lo abres con el objeto objConsulta_PING ..>  "Set objConsulta_PING = objFSO_Lista_Equipos_LDAP.OpenTextFile..· y para cerrarlo pus debes usar Close con ese objeto.


objConsulta_PING.Close
Set delFile = objFSO_Lista_Equipos_LDAP.GetFile(FicheroOriginal)
delFile.Delete


Título: Re: Crear y Eliminar fichero txt en el mismo script
Publicado por: palophp en 18 Octubre 2016, 22:32 pm
Diooooooooos!! Muchisimas gracias! :D :D :D
Ahora sí, se me había olvidado cerrar ese fichero.
Ahora solo me falta lo del CN jaajajjaja