[AYUDA][VBS] Duda sobre la copia y renombrado automatico de archivos

Iniciado por danny920825, 7 Febrero 2013, 22:51 PM

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

danny920825

Hola gente, me disculpan si este tema se trato en otro post, pero es que el tema de scripting tiene demasiadas paginas y ponerme a buscar en cada una de ellas me demoraria mas de lo que seria si alguien me ayudara y despues cerraran el tema.

Weno, a lo que iba, resulta que estoy aprendiendo vbs gracias a los post que han ido dejando en este foro, gracias por adelantado, y ahora se me ocurrio la idea de hacer un script que cuando lo ejecute, copie la informacion de una tarjeta Compact Flash para la carpeta de mi turno de trabajo, pero que no la copie asi mismo, sino que la renombre al terminar con un nombre que yo le de al terminar la copia
Ej:
Copiar de G:\kijo.log a d:\danny\07-02\nombre-especificoa

yo estaba pensando en algo asi como


set objfso = createobject("scripting.filesystemobject")
   if exist ("d:\danny\07-02") then
     objfso.copyfile ("F:\kijo.log", "d:\danny\07-02\", false)
     chapa = inputbox("Escriba la chapa del Vehiculo")
     objfso.renamefile ("d:\danny\07-02\kijo.log", chapa)
     msgbox ("Se ha copiado el archivo.")
   else
     set carpeta = objfso.createfolder ("d:\danny\07-02")
     objfso.copyfile ("F:\kijo.log", "d:\danny\07-02\")
     chapa = inputbox("Escriba la chapa del Vehiculo")
     objfso.renamefile ("d:\danny\07-02\kijo.log", chapa)
     msgbox ("Se ha copiado el archivo despues de crear la carpeta.")
exit


pero por supuesto, si lo pongo aki es xq no me funciona verdad?? por tanto si alguien pudiera ayudarme lo agradeceria.
"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno

Eleкtro

#1
1. ¿Es totálmente necesario que séa en VBS?

2. Como sugerencia, si lo que siempre vas a querer copiar es el directorio raíz del dispositivo USB, entonces yo me ahorraría la parte de abrir un user-prompt para preguntar por el directorio,
en lugar de eso, le pondría una etiqueta (label) al dispositivo y usaria el script para que reconociese el dispositivo que quieres copiar automáticamente leyendo el label de dicha unidad, obviamente el label que le deberías dar al USB debería de ser el mismo que va a usar tu script.

Pseudocode rápido:

(dim) declarar "variable label" = "test"
(dim) declarar "variable directorio" = "C:\carpeta\"

(for) por cada "unidad" en "unidades conectadas"
   (if) si "unidad" es "usb" (and) y el label de "unidad" es igual a "variable label":
        copiar el directorio raíz de "unidad" a "variable directorio"
   (else) de lo contrario:
        (next) siguiente "unidad"


Saludos.








danny920825

gracias por el intento de ayuda, comprendi la idea, pero mis conocimientos de vbs lamentablemente no me dan para tanto, aunke espero ir mejorando, es que soy algo inconstante en esto de ser autodiacta y no me mantengo mucho tiempo estudiando. La cuestion y a la vez el pollo del arroz con pollo es como renombrar un archivo en vbs? porque yo puedo buscar por la red, pero me demoro mucho porque estoy en cuba y mi conexion es pesima, imaginate que la descarga es de 9kb/s, por eso prefiero preguntar a buscar eternamente. Si me pueden ayudar, lo agradezco desde ahora, lo que necesito saber es como renombrar un archivo y como saber cuando tengo un dispositivo usb nuevo conectado, asi puedo completar el trabajo que trato de hacer. gracias
"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno

Eleкtro

· Como renombrar un archivo:

Código (vb) [Seleccionar]
File   = "C:\Archivo.txt"
Rename = "C:\Archivo Renombrado.txt"

Set FSO = CreateObject("Scripting.FileSystemObject") ' Creo el objeto

If FSO.FileExists(File) Then ' Si el archivo existe...
    FSO.MoveFile File, Rename ' Renombro el archivo
    wscript.Quit(0) ' Y termino la ejecución con código de error negativo.
Else ' De lo contrario...
Wscript.Echo "Archivo no encontrado" ' Muestro error
wscript.Quit(1) ' Y termino la ejecución con código de error positivo.
End If

' NOTA: Para renombrar un archivo, hay que moverlo a la misma localización de directorio pero especificando un nombre distinto para el archivo.
'       Aunque quizás no lo aprezca, esto es lo mismo que hace Windows de forma interna.



· Como monitorizar la inserción de dispositivos USB (No lo he testeado en profundidad)

Código (vb) [Seleccionar]
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Set wmiEvent = objWMIService.ExecNotificationQuery( _
    "Select * From __InstanceCreationEvent Within 1" & _
        " Where TargetInstance ISA 'Win32_PnPEntity'")

While True
    Set objEvent = wmiEvent.NextEvent()
    Set objUSB = objEvent.TargetInstance
    strName = objUSB.Name
    strDeviceID = objUSB.DeviceID
    Set objUSB = Nothing

    Set colDrives = objWMIService.ExecQuery( _
        "Select * From Win32_LogicalDisk Where DriveType = 2")

    For Each objDrive in colDrives
        strDriveLetter = objDrive.DeviceID
    Next

    Set colDrives = Nothing

    WScript.Echo strName & " was mounted as " & strDriveLetter
Wend

Set wmiEvent = Nothing
Set objWMIService = Nothing








danny920825

un millon de gracias por ambos codigos, ahora mismo me propongo a estudiarlos para aprender que es lo que hace y que no sea solo algo mecanico. Cualkier otra duda se que aki encontrare la respuesta
"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno