Copia automaticamente el contenido de cualquier memoria externa

Iniciado por qtimxta888, 13 Julio 2014, 00:48 AM

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

qtimxta888

Buenas tardes comunidad,

Soy nuevo en el foro y me gustaria compartir mis conocimientos con ustedes


He creado un Script en batch hace unas horas, su funcionalidad es la de copiar todo el contenido de una memoria externa (Removable Disk) a nuestra unidad C: en las respectiva carpeta con nombre del numero de serie de la memoria

Son dos Archivos

El primero es el Script en si, es bastante funcional y no he encontrado errores al testearlo

Los archivos los ejecuto desde el disco local C:, pero se pueden cambiar los valores para ejecutarlos de cualquier directorio

Vol.bat
@echo off
:Script
set a=0
set __LogicalDisk.VolumeSerialNumber="Nul"
for /f "tokens=*" %%x in ('wmic logicaldisk Where "Description='Removable Disk'" Get /Format:list ^| FINDSTR /R /C:"=."') do (
SET __LogicalDisk.%%x
)
set b=%__LogicalDisk.VolumeSerialNumber%
if %b% NEQ "Nul" (
:loop
if exist c:\%__LogicalDisk.VolumeSerialNumber%%a% (
set/a a=%a% + 1
GOTO loop
)
xcopy /e/i/h/j/y %__LogicalDisk.Caption%  c:\%__LogicalDisk.VolumeSerialNumber%%a%

)
Timeout /t 2 /nobreak >nul
GOTO Script


El segundo archivo es el lanzador, para que la consola no sea visible, el Script para lanzarlo esta desarrollado en VBS

Start.vbs
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\vol.bat" & Chr(34), 0
Set WshShell = Nothing




La ejecucion del script se mantiene permanente, si ocurre algun error como retirar la memoria, el proceso de copiado se detiene pero el programa sigue corriendo, es decir sigue a la espera de nuevos dispositivos conectados para copiar

Si la memoria ya habia sido copiada previamente, se crea un directorio con el mismo nombre pero sumandole un numero, es decir si la carpeta se llama 12340, la siguiente carpeta seria 12341, esto es valioso debido a que si se hizo algun cambio en la memoria nuestra copia anterior no se ve afectada

Es capaz de copiar archivos ocultos y archivos de sistema.

Ya me imagino que estan pensando, y si hago que el archivo se ejecute siempre al iniciar el sistema?, claro, simplemente se configura el registro de windows y taran! tenemos nuestro archivo oculto, e iniciandose siempre con el sistema

Tambien se han de preguntar, no me hara lento mi SO? pues hice pruebas de rendimiento, y no hubo variacion cuando se ejecuta y cuando no con respecto al CPU.




Cualquier duda o aportacion dejenmela saber :)

asdexiva

me podrias explicar para que sirve esta parte
set __LogicalDisk.VolumeSerialNumber="Nul"
for /f "tokens=*" %%x in ('wmic logicaldisk Where "Description='Removable Disk'" Get /Format:list ^| FINDSTR /R /C:"=."') do (
SET __LogicalDisk.%%x


vi esto y me asuste Format:list jajaja

qtimxta888

Cita de: asdexiva en 13 Julio 2014, 03:05 AM
me podrias explicar para que sirve esta parte
set __LogicalDisk.VolumeSerialNumber="Nul"
for /f "tokens=*" %%x in ('wmic logicaldisk Where "Description='Removable Disk'" Get /Format:list ^| FINDSTR /R /C:"=."') do (
SET __LogicalDisk.%%x


vi esto y me asuste Format:list jajaja

jajaja listo
format:list sirve para generar el resultado en formato de lista, la primera linea se le asigna un valor nulo a la variable para que no existan errores de asignacion en el lazo de repeticion

la segunda linea es un lazo de repeticion for, le pide por asi decirlo "al sistema" que le devuelva el detalle de todos los discos que especifica la condicion Where, entonces en cada ejecucion devuelve los discos extraibles que tiene el sistema.

la tercera linea, asigna el valor a la variable __LogicalDisk. lo que obtuvo el for,
__LogicalDisk. es solo una variable, se la puede cambiar por cualquier otra pero con los subguiones precedentes
por ejemplo

__LogicalDisk.Caption=E:
o puede ser tambien
__MiDiscoExterno.Caption=E:


Aclaro, este codigo no afecta ningun archivo almacenado, solo copia.

:D :D :D :D

MONOhack

..el conocimiento puede cambiar el mundo..

mix2014

como hago para quitar la proteccion contra escritura de un pendrive?????? :huh: :huh: :huh:

Eleкtro

Cita de: mix2014 en  9 Agosto 2014, 20:36 PMcomo hago para quitar la proteccion contra escritura de un pendrive?????? :huh: :huh: :huh:

No es correcto invadir el post de otra persona para hacer una pregunta irrelevante al tema, si tienes dudas debes crear tu post.

Cita de: http://lmgtfy.com/?q=pendrive+remove+write+protectionTo remove write protection:

    Open Start Menu >> Run, type regedit and press Enter. This will open the registry editor.
    Navigate to the following path:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies

    Double click the key WriteProtect in the right pane and set the value to 0
    In the Data Value Box, press OK
    Exit Registry, restart your computer and then re-connect your USB pen drive to your computer.

Saludos.