Páginas: [1] 2 3 4
|
 |
|
Autor
|
Tema: Detector unidades Pendrive 5.0c (Leído 2314 veces)
|
carlitos.dll
Desconectado
Mensajes: 271
|
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.
|
|
|
|
« Última modificación: 26 Julio 2008, 20:00 por carlitos.dll »
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 271
|
¿algún comentario? Si funciona, lo explico 
|
|
|
|
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 271
|
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.
|
|
|
|
« Última modificación: 30 Junio 2008, 21:22 por carlitos.dll »
|
En línea
|
|
|
|
ari-slash
Desconectado
Mensajes: 336
Chileno
|
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
|
|
|
|
|
En línea
|
|
|
|
Novlucker
Desconectado
Mensajes: 1.592
|
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  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 ifSaludos 
|
|
|
|
« Última modificación: 01 Julio 2008, 00:39 por Novlucker »
|
En línea
|
"Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro." Albert Einstein
|
|
|
carlitos.dll
Desconectado
Mensajes: 271
|
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.
|
|
|
|
« Última modificación: 12 Julio 2008, 03:26 por carlitos.dll »
|
En línea
|
|
|
|
|
|
ari-slash
Desconectado
Mensajes: 336
Chileno
|
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
|
|
|
|
|
En línea
|
|
|
|
|
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
|
|
|
|
|
En línea
|
|
|
|
Novlucker
Desconectado
Mensajes: 1.592
|
Esque 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  Saludos
|
|
|
|
|
En línea
|
"Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro." Albert Einstein
|
|
|
|
sirdarckcat
|
No me entendiste.. se puede pasar tu algoritmo a batch.. no hablo de generar un vbs "on the fly".
|
|
|
|
|
En línea
|
|
|
|
Novlucker
Desconectado
Mensajes: 1.592
|
No me entendiste.. se puede pasar tu algoritmo a batch.. no hablo de generar un vbs "on the fly".
Entonces si no lo había entendido  , ahora ya entendí, retiro lo dicho anteriormente 
|
|
|
|
|
En línea
|
"Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro." Albert Einstein
|
|
|
|
sirdarckcat
|
aunque dará falsos positivos de unidades creadas de red, y con subst..
|
|
|
|
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 271
|
Si pudieses escribir lo mismo Sirdarckcat, en menos líneas, igual sería bueno, así todos aprendemos. Leyendo código, aprendes a escribir código.
Es que el algoritmo que hice es largo, se me ocurrió, investigando el registro. Pero si hay alguna llamada al sistema que se pueda hacer, es decir la misma llamada que hace el vbs de novlucker, descubrirla, un rundll32 y algo, sería bueno. Aunque el algoritmo, no es tan largo, de hecho leo el archivo una sola vez, si te fijas, hay un for que tiene un skip.
Lo otro, a principio del archivo, lo copio a otro con el comando type, para generar un archivo en codificación Windows 1252: Western European, porque el archivo que genera el comando reg.exe lo exporta en formato "Unicode, UTF-16 little endian", y el comando findstr no lee esa codificación. Nota la codificación la averigué con EditPad Lite, y lo de la codificación, se me ocurrió, por descarte.
Suena interesante eso del comando debug.
|
|
|
|
« Última modificación: 01 Julio 2008, 18:18 por carlitos.dll »
|
En línea
|
|
|
|
|
sirdarckcat
|
Desafortunadamente no tengo acceso a ninguna computadora con windows por el momento.. pero de lo que recuerdo sería algo así: Para generar una letra según su valor ASCII en hexadecimal: @echo off set ASCII=41 (echo e 100 %ASCII% 0a & echo n letra.com & echo rcx & echo 2 & echo q)|debug > NUL type letra.com | cmd /C "set /P letra=" echo letra
Para el for es un simple FOR que recorre desde el ASCII de A hasta el de Z.. (hay que hacerlo en hex.. pero eso es posible.. solo trabajoso). Y ya es todo 
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1] 2 3 4
|
|
|
|