elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Seleccionar unidad y ejecutar comando
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Seleccionar unidad y ejecutar comando  (Leído 21,881 veces)
Dany3j

Desconectado Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Seleccionar unidad y ejecutar comando
« en: 29 Junio 2011, 03:29 am »

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

Código:
@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 Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Seleccionar unidad y ejecutar comando
« Respuesta #1 en: 29 Junio 2011, 12:56 pm »

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:

Código:
if %opcion%==d D:

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

Código:
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:" ;D.

Saludos




Código
  1. @echo off
  2. Title=foro.elhacker.net
  3. color cf
  4. setlocal Enabledelayedexpansion
  5.  
  6.  
  7.  
  8. REM Listamos todas las unidades.
  9.  
  10. for /F "tokens=1-9* delims=:\ " %%a in ('fsutil fsinfo drives') do (
  11. Set unidad=%%b & Call :verificar
  12. Set unidad=%%c & Call :verificar
  13. Set unidad=%%d & Call :verificar
  14. Set unidad=%%e & Call :verificar
  15. Set unidad=%%f & Call :verificar
  16. Set unidad=%%g & Call :verificar
  17. Set unidad=%%h & Call :verificar
  18. Set unidad=%%i & Call :verificar
  19. Set unidad=%%j & Call :verificar
  20. )
  21. goto :menu
  22.  
  23.  
  24.  
  25. REM Filtramos las unidades Fijas y Extraibles y nos deshacemos de las unidades opticas.
  26.  
  27. :Verificar
  28. fsutil fsinfo drivetype !unidad:~-0,1!: | findstr /s "fija extra"
  29. If %errorlevel% EQU 0 (
  30. set /a num+=1
  31. Set Unidad!num!=!unidad:~-0,1!:
  32. goto:eof
  33. ) ELSE (
  34. goto:eof
  35. )
  36.  
  37.  
  38.  
  39. REM El menu para elegir la unidad a desinfectar.
  40.  
  41. :Menu
  42. cls
  43. echo ========================!num! UNIDADES ENCONTRADAS=========================
  44. echo =======================================================================
  45. echo ======================UNIDADES !unidad1!!Unidad2!!Unidad3!!Unidad4!!Unidad5!!Unidad6!!Unidad7!!Unidad8!!Unidad9!DETECTADAS=======================
  46. echo =======================================================================
  47. echo =====================PRESIONE LA LETRA DE LA UNIDAD====================
  48.  
  49.  
  50. set /p opcion=
  51. if exist %opcion::=%: (
  52. goto :desinfectar
  53. ) ELSE (
  54. echo+ & echo No se encuentra la unidad %opcion::=%:...
  55. ping -n 2 LOCALHOST >nul
  56. cls
  57. goto :menu
  58. )
  59.  
  60.  
  61.  
  62. REM Desinfectamos en la unidad seleccionada.
  63.  
  64. :Desinfectar
  65. Setlocal Disabledelayedexpansion
  66.  
  67. echo =======================================================================
  68. echo =======================================================================
  69. echo =====================REPARANDO ARCHIVOS INFECTADOS=====================
  70. Attrib /d /s -r -h -s "%opcion::=%:\*"
  71. echo =======================================================================
  72. echo =======================================================================
  73. echo ======================ELIMINANDO ACCESOS DIRECTOS======================
  74. if exist "%opcion::=%:\*.lnk" del /f /q "%opcion::=%:\*.lnk"
  75. echo =======================================================================
  76. echo =======================================================================
  77. echo ==========================ELIMINANDO AUTORUN===========================
  78. if exist %opcion::=%:\autorun.inf del /F %opcion::=%:\autorun.inf
  79. echo =======================================================================
  80. echo =======================================================================
  81. echo ========================OPERACI¢N FINALIZADA===========================
  82. echo =======================================================================
  83. echo =======================================================================
  84.  
  85. msg *     =====ARCHIVOS REPARADOS D@NY3J=====
  86.  
  87. REM By PiToLoKo
  88. REM foro.elhacker.net
  89.  
  90. setlocal Enabledelayedexpansion
  91. goto :menu
  92.  





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 Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Re: Seleccionar unidad y ejecutar comando
« Respuesta #2 en: 29 Junio 2011, 17:44 pm »

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 Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Seleccionar unidad y ejecutar comando
« Respuesta #3 en: 29 Junio 2011, 18:06 pm »

GRacias pitoloko  ;-) si voy a repasar un poco lo que pasa que no domino mucho programacion bath

Batch.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Dany3j

Desconectado Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Re: Seleccionar unidad y ejecutar comando
« Respuesta #4 en: 29 Junio 2011, 20:43 pm »

lo e ejecutado en windows 7 y funciona pero me sale un error

Citar
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 Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Seleccionar unidad y ejecutar comando
« Respuesta #5 en: 29 Junio 2011, 21:22 pm »

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:

Código:
fsutil fsinfo drives

Debería salirte algo así:

Código:
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 Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Re: Seleccionar unidad y ejecutar comando
« Respuesta #6 en: 29 Junio 2011, 22:29 pm »

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  :o
En línea

"Pensando en Batch" XD
WaAYa HaCK

Desconectado Desconectado

Mensajes: 292


Arduino, Android and music


Ver Perfil
Re: Seleccionar unidad y ejecutar comando
« Respuesta #7 en: 1 Julio 2011, 13:04 pm »




Ufff... no podías poner otro color más cañero?  :xD --> 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 Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Seleccionar unidad y ejecutar comando
« Respuesta #8 en: 1 Julio 2011, 13:54 pm »

Es el color que tenía su batch xD, si por mi fuera...  ;)




 :silbar:
« Última modificación: 1 Julio 2011, 14:02 pm por pitoloko » En línea

No he vuelto, solo estoy de paso.
Dany3j

Desconectado Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Re: Seleccionar unidad y ejecutar comando
« Respuesta #9 en: 2 Julio 2011, 02:06 am »

Es el color que tenía su batch xD, si por mi fuera...  ;)




 :silbar:

Te quedo rebien porfa si puede publicar el codigo...  :laugh: me gusto mucho.
En línea

"Pensando en Batch" XD
Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ejecutar comando del cmd
Programación Visual Basic
fraktal 3 2,473 Último mensaje 6 Octubre 2006, 01:11 am
por fraktal
ejecutar comando cmd en red.
Foro Libre
lordlionell 0 2,684 Último mensaje 26 Mayo 2011, 00:59 am
por lordlionell
Script VBS para ejecutar desde Unidad USB
Programación Visual Basic
QXT 0 2,762 Último mensaje 8 Noviembre 2013, 13:07 pm
por QXT
¿Que tipo de VPS seleccionar para ejecutar 100 hilos? « 1 2 »
Programación General
Andres128 10 9,020 Último mensaje 31 Julio 2017, 06:35 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines