Autor
|
Tema: Seleccionar unidad y ejecutar comando (Leído 21,881 veces)
|
Dany3j
Desconectado
Mensajes: 142
Echo "Aprendiendo Batch."
|
Hola amigos estoy tratando de hacer un bat en el cual cambio los atributos de los archivos borro accesos directos pero primero selecciono la unidad en la que lo voy a ejecutar. pero no funciona solo se ejecuta en el directorio donde esta el bat. aqui esta el codigo que estoy usando @echo off color cf for %%_ in (D, E, F, G, H, I, J, K, L, M, N, O, P, Q, S, T, U, V, W, X, Y, Z) do ( dir /b %%_:\ > nul 2>&1 && ( @echo =========================UNIDAD "%%_:" DETECTADA========================= ) ) @echo =======================================================================
:menu @echo =====================PRESIONE LA LETRA DE LA UNIDAD==================== set /p opcion= if %opcion%==d D: @echo ======================================================================= @echo ======================================================================= @echo =====================REPARANDO ARCHIVOS INFECTADOS===================== Attrib /d /s -r -h -s *.* @echo ======================================================================= @echo ======================================================================= @echo ======================ELIMINANDO ACCESOS DIRECTOS====================== if exist *.lnk del *.lnk @echo ======================================================================= @echo ======================================================================= @echo ==========================ELIMINANDO AUTORUN=========================== if exist autorun.inf del autorun.inf @echo ======================================================================= @echo ======================================================================= @echo ========================OPERACION FINALIZADA=========================== @echo ======================================================================= @echo ======================================================================= msg * =====ARCHIVOS REPARADOS D@NY3J===== cls goto menu) if %opcion%==e E: @echo ======================================================================= @echo ======================================================================= @echo =====================REPARANDO ARCHIVOS INFECTADOS===================== Attrib /d /s -r -h -s *.* @echo ======================================================================= @echo ======================================================================= @echo ======================ELIMINANDO ACCESOS DIRECTOS====================== if exist *.lnk del *.lnk @echo ======================================================================= @echo ======================================================================= @echo ==========================ELIMINANDO AUTORUN=========================== if exist autorun.inf del autorun.inf @echo ======================================================================= @echo ======================================================================= @echo ========================OPERACION FINALIZADA=========================== @echo ======================================================================= @echo ======================================================================= msg * =====ARCHIVOS REPARADOS D@NY3J===== cls goto menu) if %opcion%==f F: @echo ======================================================================= @echo ======================================================================= @echo =====================REPARANDO ARCHIVOS INFECTADOS===================== Attrib /d /s -r -h -s *.* @echo ======================================================================= @echo ======================================================================= @echo ======================ELIMINANDO ACCESOS DIRECTOS====================== if exist *.lnk del *.lnk @echo ======================================================================= @echo ======================================================================= @echo ==========================ELIMINANDO AUTORUN=========================== if exist autorun.inf del autorun.inf @echo ======================================================================= @echo ======================================================================= @echo ========================OPERACION FINALIZADA=========================== @echo ======================================================================= @echo ======================================================================= msg * =====ARCHIVOS REPARADOS D@NY3J===== cls goto menu) if %opcion%==g G: @echo ======================================================================= @echo ======================================================================= @echo =====================REPARANDO ARCHIVOS INFECTADOS===================== Attrib /d /s -r -h -s *.* @echo ======================================================================= @echo ======================================================================= @echo ======================ELIMINANDO ACCESOS DIRECTOS====================== if exist *.lnk del *.lnk @echo ======================================================================= @echo ======================================================================= @echo ==========================ELIMINANDO AUTORUN=========================== if exist autorun.inf del autorun.inf @echo ======================================================================= @echo ======================================================================= @echo ========================OPERACION FINALIZADA=========================== @echo ======================================================================= @echo ======================================================================= msg * =====ARCHIVOS REPARADOS D@NY3J===== cls goto menu) if %opcion%==h H: @echo ======================================================================= @echo ======================================================================= @echo =====================REPARANDO ARCHIVOS INFECTADOS===================== Attrib /d /s -r -h -s *.* @echo ======================================================================= @echo ======================================================================= @echo ======================ELIMINANDO ACCESOS DIRECTOS====================== if exist *.lnk del *.lnk @echo ======================================================================= @echo ======================================================================= @echo ==========================ELIMINANDO AUTORUN=========================== if exist autorun.inf del autorun.inf @echo ======================================================================= @echo ======================================================================= @echo ========================OPERACION FINALIZADA=========================== @echo ======================================================================= @echo ======================================================================= msg * =====ARCHIVOS REPARADOS D@NY3J===== cls goto menu)
he intentado de todo y no he podigo gracias de antemano el que me de una manito...
|
|
|
En línea
|
"Pensando en Batch" XD
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
1º Tengo una duda, ¿Con que intención haces un dir de la unidad? :/ Si intentas comprobar si la unidad existe, no es correcto, deberías usar if exist, o el comando del Dir + If %errorlevel%... 2º - Recuerda el uso de las comillas dobles en las acciones de " desinfectar" (en tu batch original como en el mio), de lo contrario no funcionaran las acciones sobre archivos con espacios en el nombre, y con los accesos directos lo mismo. 3º - en los If exist debes marcar la Ruta/letra de la unidad, por eso el bat solamente busca en el direcorio donde tenías tu batch. 4º Tu menú no funciona porque: No puedes marcar dos posibles respuestas ( d y D:) en el mismo IF. Asi que en tu batch original hace falta 4 posibles respuestas, entonces quedaría así: if %opcion%==d ... if %opcion%==D ... if %opcion%==d: ... if %opcion%==D: ... Se que es un engorro, Pero con ingenio todo se puede simplificar, yo solo uso un IF que reune las 4 posibles respuestas qu he mencionado, y todas las demás que necesita tu batch original. Miratelo y aprende poco a poco, hay comandos muy utiles como el fsutil! 5º - Te he ordenado, simplificado, y mejorado el code. (Para que funcione correctamente, solo hace falta escribir la letra de la unidad (A,B,C,D,etc..) sin puntos Ya lo he corregido en el batch, puedes escribir " C" o " C:" . Saludos
color cf REM Listamos todas las unidades. for /F "tokens=1-9* delims=:\ " %%a in ('fsutil fsinfo drives' ) do ( ) REM Filtramos las unidades Fijas y Extraibles y nos deshacemos de las unidades opticas. :Verificar fsutil fsinfo drivetype !unidad:~-0,1!: | findstr /s "fija extra" Set Unidad !num!=!unidad:~-0,1!: ) REM El menu para elegir la unidad a desinfectar. :Menu cls echo ======================== !num! UNIDADES ENCONTRADAS========================= echo ======================================================================= echo ======================UNIDADES !unidad1!!Unidad2!!Unidad3!!Unidad4!!Unidad5!!Unidad6!!Unidad7!!Unidad8!!Unidad9!DETECTADAS======================= echo ======================================================================= echo =====================PRESIONE LA LETRA DE LA UNIDAD==================== echo+ & echo No se encuentra la unidad %opcion::=%:... cls ) REM Desinfectamos en la unidad seleccionada. :Desinfectar echo ======================================================================= echo ======================================================================= echo =====================REPARANDO ARCHIVOS INFECTADOS===================== Attrib /d /s -r -h -s "%opcion::=%:\*" echo ======================================================================= echo ======================================================================= echo ======================ELIMINANDO ACCESOS DIRECTOS====================== if exist " %opcion::=%:\*.lnk" del /f /q " %opcion::=%:\*.lnk" echo ======================================================================= echo ======================================================================= echo ==========================ELIMINANDO AUTORUN=========================== if exist %opcion::=%:\autorun.inf del /F %opcion::=%:\autorun.inf echo ======================================================================= echo ======================================================================= echo ========================OPERACI¢N FINALIZADA=========================== echo ======================================================================= echo ======================================================================= msg * =====ARCHIVOS REPARADOS D@NY3J===== REM By PiToLoKo REM foro.elhacker.net
PD: Lo he probado y me funciona bien, ya nos cuentas como te ha ido
|
|
« Última modificación: 29 Junio 2011, 21:59 pm por pitoloko »
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
Dany3j
Desconectado
Mensajes: 142
Echo "Aprendiendo Batch."
|
GRacias pitoloko si voy a repasar un poco lo que pasa que no domino mucho programacion bath.
|
|
|
En línea
|
"Pensando en Batch" XD
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
GRacias pitoloko si voy a repasar un poco lo que pasa que no domino mucho programacion bath. Batch.
|
|
|
En línea
|
|
|
|
Dany3j
Desconectado
Mensajes: 142
Echo "Aprendiendo Batch."
|
lo e ejecutado en windows 7 y funciona pero me sale un error no hay disco en la unidad inserte un disco en la unidad \device\harddisk1\DR1 y tambien DR6 y en windows xp no me reconoce el pendrive teniendo como letra H: mi unidad solo el disco c: porque sera...? Y gracias por la correccion Leo
|
|
|
En línea
|
"Pensando en Batch" XD
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
Seguro que tienes los dispositivos bien conectados y tal? Acabo de probarlo en un pen, unidad "F", me ha funcionado bien. saludosss EDITO: ¿estás usando mi code, o el tuyo? Si has copiado el mio tal cual, debería ir Pon esto en la consola: Debería salirte algo así: Unidades: A:\ C:\ D:\ F:\ El error que dices, parece ser del FSUTIL, por eso, comprueba que te sale lo mismo que a mi xD EDITO2: Tambien se me ocurre que puede ser un error al leer unidades ópticas... (CD, DVD, BR), así que he modificado el script de arriba, el menú ahora solamente muestra las unidades fijas y extraibles (Discos duros y Pendrives/SD's/etc...), bueno o eso creo, porque ahora no puedo probarlo con mi lector de DVD, que está desconectado xDDDDDDDD, de todas formas Pruebalo, ¿ok? Saludos
|
|
« Última modificación: 29 Junio 2011, 22:04 pm por pitoloko »
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
Dany3j
Desconectado
Mensajes: 142
Echo "Aprendiendo Batch."
|
Si es eso mismo... que pense yo aun tiene un error. me esta detectndo la unidad E: y solo tengo el disco C: y D: me imagino que es porque la pc tiene un lector de memorias sd y no tiene la memoria puesta cuando selecciono la letra E: k me imagino que es la de la memoria me sale el mismo error
|
|
|
En línea
|
"Pensando en Batch" XD
|
|
|
WaAYa HaCK
Desconectado
Mensajes: 292
Arduino, Android and music
|
Ufff... no podías poner otro color más cañero? --> Sí, sé que puedes Gracias por el code, no sabía lo de fsutil ... Saludos!
|
|
|
En línea
|
La cacatúa yoyó es nueva en el zoo!
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
|
|
« Última modificación: 1 Julio 2011, 14:02 pm por pitoloko »
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
Dany3j
Desconectado
Mensajes: 142
Echo "Aprendiendo Batch."
|
Te quedo rebien porfa si puede publicar el codigo... me gusto mucho.
|
|
|
En línea
|
"Pensando en Batch" XD
|
|
|
|
|