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.
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.
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
· Como renombrar un archivo:
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)
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
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