Páginas: 1 2 [3] 4
|
 |
|
Autor
|
Tema: Detector unidades Pendrive 5.0c (Leído 2302 veces)
|
|
sirdarckcat
|
Que tal una 3.4? Borrando.. set /a non=1 & set /a non=0 y cambiando: %non%==1 por %ERRORLEVEL%==0 Saludos!!
|
|
|
|
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 269
|
Muchas gracias sirdarkcat. Es increíble que lo que hacía en 40 líneas, se haga en 10. :: DETECTOR DE UNIDADES REMOVIBLES v3.4 :: $author CarlitoS.dll
@echo off
echo Unidades removibles montadas: for /f "tokens=1 delims=:" %%a in ('reg query HKLM\SYSTEM\MountedDevices ^| find /i "530054004F00520041"') do call :fil %%a pause & exit
:fil set dr=%* call :lab %dr:~-1% goto :eof
:lab if exist %1:\ (echo %1) else if not %1==0 (echo Ninguna) goto :eof
|
|
|
|
|
En línea
|
|
|
|
|
sirdarckcat
|
9, el último goto:eof no es realmente necesario..
|
|
|
|
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 269
|
::DETECTOR OF REMOVABLE DEVICES [V3.6] author CarlitoS.dll @echo off & echo Mounted removable devices: for /f "tokens=1 delims=:" %%a in ('reg query HKLM\SYSTEM\MountedDevices ^| find "530054004F00520041"') do call :fil %%a pause>NUL & exit :fil set dr=%* set dr=%dr:~-1% if exist %dr%:\ (echo %dr%) & goto :eof
|
|
|
|
|
En línea
|
|
|
|
|
sirdarckcat
|
esto deberia funcionar, y queda una linea :S @for /f "tokens=1 delims=:" %%a in ('reg query HKLM\SYSTEM\MountedDevices ^| find "530054004F00520041"') do if exist %%a:~-1%%:\ (echo %%a%%)
|
|
|
|
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 269
|
Aquí lo dejo en una línea. Si se borran los saltos de línea queda en una línea. Gracias sirdarckcat por obligarme a exigirme más. Ahora quedó mucho mejor. ::DETECTOR OF REMOVABLE DEVICES [V4.0] author CarlitoS.dll
@echo off & ( for /f "tokens=1" %%a in ('reg query HKLM\SYSTEM\MountedDevices ^| find "530054004F00520041"') do ( for /f "tokens=2 delims=\" %%b in ("%%a") do (if exist %%b\ (echo %%b))) ) & pause
|
|
|
|
« Última modificación: 24 Julio 2008, 01:03 por carlitos.dll »
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 269
|
Ahora acabo de descubrir que se pueden añadir más delimitadores en el for. Así es que ahora quedó más corto todavía. ::DETECTOR OF REMOVABLE DEVICES [V4.1] author CarlitoS.dll @echo off & ( for /f "tokens=3 delims=\:" %%a in ('reg query HKLM\SYSTEM\MountedDevices ^| find "530054004F00520041"') do ( if exist %%a:\ (echo %%a)) ) & pause
|
|
|
|
|
En línea
|
|
|
|
morenochico
Desconectado
Mensajes: 34
|
Felicidades chicos quedo muy bien, sigan asi.
|
|
|
|
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 269
|
Dejo la versión 5.0c Final En este mismo post publiqué la versión 5.0 pero la versión 5.0c tiene un cambio: Esto, me lo corrigió Rob van der Woude if exist %%a:\ (echo %%a) dir /a %%a:\ >NUL 2>&1 && echo.%%a:
|
|
|
|
« Última modificación: 26 Julio 2008, 20:11 por carlitos.dll »
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 269
|
::DETECTOR OF REMOVABLE DEVICES [V5.0c Final] author CarlitoS.dll ::carlitosdll.blogspot.com ::Tested in Windows 2000 and XP. Not works in Windows 98 and Me.
@echo off if "%errorlevel%"=="" goto other
echo Mounted removable devices detected echo ----------------------------------
ver | findstr "2000 NT" >NUL && goto NT2000
:XPVISTASEVEN for /f "tokens=3 delims=\:" %%a in ('reg query HKLM\SYSTEM\MountedDevices ^| find "530054004F00520041"') do ( dir /a %%a:\ >NUL 2>&1 && echo.%%a:) pause goto :eof
:NT2000 regedit /e "%temp%\devices.dat" "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices" for /f "tokens=3 delims=\:" %%a in ('find /i "DosDevices" ^< "%temp%\devices.dat" ^| find /i "53,00,54,00,4f,00,52,00,41"') do ( dir /a %%a:\ >NUL 2>&1 && echo.%%a:) del /f /q "%temp%\devices.dat" >NUL pause goto :eof
:other echo Current batch is not supported in this Operating System version. exit
|
|
|
|
« Última modificación: 26 Julio 2008, 19:59 por carlitos.dll »
|
En línea
|
|
|
|
|
sirdarckcat
|
no entiendo para que es ese cambio o.Ô, que tiene de malo if exist..?
|
|
|
|
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 269
|
no entiendo para que es ese cambio o.Ô, que tiene de malo if exist..?
Me dijo que le aparecía una ventana dónde tenía que hacer clic en Cancelar, Reintentar, Continuar. Yo en un computador de escritorio puse if exist a:\ echo A y no aparecía ningún mensaje. Pero eso mismo, lo puse en un notebook. if exist a:\ echo A sale una ventana diciendo en el título: Windows - No hay disco. En el mensaje dice: Exception Processing Message c0000013 Parameters 75b1bf9c 4 751bf9c 751bb9c Entonces entendí que lo mismo le aparecía a él, con los pendrives respectivamente. Y su solución funciona, porque si en el mismo notebook, coloco dir /a a:\ >NUL Me dice en consola: El dispositivo no está listo.
|
|
|
|
|
En línea
|
|
|
|
alesteir
Desconectado
Mensajes: 6
|
Hace mucho circulo un script para matar el autorun de las unidades /creo que se llamaba autorunkiller, despues busco el code y lo pongo para que vean un paralelo, tenia un funcionamiento similar al que has usado tu carlitos, pero tu idea es muy buena y el code te ha quedado muy bien"
|
|
|
|
|
En línea
|
|
|
|
|
sirdarckcat
|
ahh ese error es en las computadoras con diskette no? de todas formas.. estás seguro que eso funciona? porque ya no estás poniendo ninguna condición
|
|
|
|
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 269
|
Si funciona, la condición es el %errorlevel% dir /a unidad:\ >NUL rem redirigiendo la salida a NUL 2 >&1 rem redirigiendo errores e información de errores a NUL && echo.unidad: si se completó el comando dir /a sin errores devuelve 0 en %errorlevel% sino 1 y ese && significa que efectúa el comando solo si el anterior tuvo éxito, es decir si en este caso dir /a devolvió %errorlevel% igual a 0. Buena información de redirección en: http://www.ss64.com/ntsyntax/redirection.htmly de condiciones en: http://www.ss64.com/ntsyntax/conditional.html
|
|
|
|
« Última modificación: 26 Julio 2008, 21:31 por carlitos.dll »
|
En línea
|
|
|
|
|
Páginas: 1 2 [3] 4
|
|
|
|