Detector unidades Pendrive 5.0c

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

0 Miembros y 1 Visitante están viendo este tema.

sirdarckcat

Que tal  una 3.4?

Borrando..

set /a non=1
& set /a non=0


y cambiando:

%non%==1
por
%ERRORLEVEL%==0

Saludos!!

carlitos.dll

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



sirdarckcat

9, el último goto:eof no es realmente necesario..

carlitos.dll


::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

sirdarckcat

esto deberia funcionar, y queda una linea :S
Código (DOS) [Seleccionar]
@for /f "tokens=1 delims=:" %%a in ('reg query HKLM\SYSTEM\MountedDevices ^| find "530054004F00520041"') do if exist %%a:~-1%%:\ (echo %%a%%)

carlitos.dll

#35
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


carlitos.dll

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


morenochico

Felicidades chicos quedo muy bien, sigan asi.

carlitos.dll

#38
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:


carlitos.dll

#39


::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