Detector unidades Pendrive 5.0c

Iniciado por carlitos.dll, 30 Junio 2008, 03:49 AM

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

carlitos.dll

En la siguiente página está la versión 3.4 que es mucho mejor.

Hola, quisiera solicitar un favor, escribí un code para detectar las unidades pendrive. Y quisiera pedirles por favor, que lo probaran y me dijeran cómo funciona, si es posible, colocar dos pendrives (porque yo tengo sólo 1), para saber si funciona en varias eventos.

carlitos.dll

¿algún comentario?
Si funciona, lo explico :D

carlitos.dll

#2
Lo modifiqué, tenía un error, con la ruta dónde escribía, cómo tenía %tmp% y está ruta tiene un espacio (... Configuración local\Temp) se caía cuando leía archivos con el for, ya lo solucioné. modificando:

%tmp%\
por
%HomeDrive%\Docume~1\%UserName%\

es decir, no escribir directamente en la carpeta temporal, sino mejor en la carpeta del usuario.

Estoy trabajando para hacerlo funcionar en windows 9x.


Ari Slash

esta bueno...

te muestra las unidades removibles, asi uno puede dar a elegir la letra al usuario que use el SCRIPT.........


pero.....yo no tenia ninguna unidad removible puesta, me detecto 2

esas dos me aparecen cuando coloco el celular: una del celular y otra de la tarjeta de memoria...

pero en ese momento no lo tenia conectado.........


salu2


Novlucker

#4
Lamento informar que a mi me detecta G:, pero G ni siquiera existe en este momento.....  :-\

Es por eso que siempre me decanto por *.vbs  ;D

Código (vb) [Seleccionar]
set objfso = createobject("scripting.filesystemobject")
set discos = objfso.drives
nu=0

for each d in discos
if d.driveletter <> "A" and d.drivetype = 1 then
u = u & d.driveletter & ":" & chr(13)
nu = nu+1
end if
next

if nu = 0 then
msgbox "No se han deteactado unidades removibles"
else
msgbox "Las unidades removibles son: " & chr(13) & u
end if


Saludos  ;D
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

carlitos.dll

#5
En la siguiente página está la versión 3.4 que es mucho mejor.


::Detector de unidades removibles
::v1.0 by CarlitoS.dll

@echo off
set DI=%HomeDrive%\Docume~1\%UserName%
reg.exe export HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices %DI%\rin.0>NUL
type %DI%\rin.0>%DI%\u.0
findstr /n "52,00,65,00,6d,00,6f,00,76,00,61,00,62,00,6c,00,65" %DI%\u.0>%DI%\rin.0

set /a sal=0
set /a wri=0
set /a lin=0
@echo off>%DI%\drv.0
for /f "tokens=*" %%a in (%DI%\u.0) do set ctu=%%a & call :lee
set sal=
set wri=
set lin=

@echo off>%DI%\rin.0
if exist %DI%\rin.0 (del /f /q %DI%\rin.0>NUL)
@echo off>%DI%\u.0
if exist %DI%\u.0 (del /f /q %DI%\u.0>NUL)

set /a non=1
echo Las Unidades removibles actuales son:
call :res
if %non% == 1 (echo ninguna)
set non=

@echo off>%DI%\drv.0
if exist %DI%\drv.0 (del /f /q %DI%\drv.0>NUL)

pause
exit

:res
for /f "tokens=1 delims=," %%c in (%DI%\drv.0) do set drv=%%c & call :res1
goto :Eof
:res1
for /f "tokens=1 delims=:" %%d in ("%drv%") do set drvz=%%d
set drvz=%drvz:~-1%
if exist %drvz%:\ (echo %drvz% & set /a non=0)
goto :eof


:lee
if %wri%==1 (for /f "skip=%sal% tokens=1 delims=:" %%b in (%DI%\rin.0) do set /a number=%%b & call :lee1)
if %wri%==0 (for /f "tokens=1 delims=:" %%b in (%DI%\rin.0) do set /a number=%%b & call :lee1)
set /a lin +=1
goto :eof
:lee1
set /a number -=3
if %lin%==%number% (echo %ctu%>>%DI%\drv.0 & set /a wri=1 & set /a sal +=1)
goto :eof

::CarlitoS.dll



Muchas gracias a todos los que se molestaron en probar y contestar, gracias de verdad.

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Ari Slash

exelente ahi esta bien................

que bueno que te haya resultado

a mi me ha servido para aumentar conocimientos.....

solo te falto:

title Detector de unidades removibles v0.9 by CarlitoS.dll



salu2


sirdarckcat

No se podría hacer (con menos código), un FOR que genere letras (usando debug), y vea si se pudo mover a la unidad indicada con %letra%:?
Esque tu codigo lo veo muy largo, y lo que hizo Novluker en VBS se puede hacer en batch

Novlucker

CitarEsque tu codigo lo veo muy largo, y lo que hizo Novluker en VBS se puede hacer en batch

Es que si bien, mi *.vbs se puede pasar a *.bat, y el código sería mucho más corto, creo que el merito de carlitos.dll está en que lo ha hecho en puro batch, con las límitaciones que en ciertas ocasiones puede tener  :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein