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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ayuda con un Error en Batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con un Error en Batch  (Leído 1,921 veces)
Black_Phoenix

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Ayuda con un Error en Batch
« en: 19 Junio 2018, 04:35 am »

Hola gente de Elhacker.net, tengo un problema... ;D :( :-\

Necesito una ayuda con el Batch, estoy aprendiendo algo de programación y decidí empezar con algo básico, Batch, lo que sucede es que me hice un archivo para matar procesos solo con escribir el nombre del programa, por ejemplo: Chrome =>  Se cierra chrome.exe y por lo tanto el programa de google chrome. Pero por ejemplo en el programa incluyo una función para cerrar el proceso de Spotify y que si es otra palabra o letra que no sea "Spotify" el programa envié un mensaje que diga "Opción no valida" lo que sucede es que cuando escribo algo al azar como "fazer" me ejecuta la opción de cerrar Spotify, cosa que no quiero que suceda, por suerte cuando pongo Chrome o Discord por ejemplo, no tengo el problema, otro problema es que después de que se cierra el programa que indico debe aparecer una opción que diga "Desea Terminar otro Proceso? [Y/N]" y que si la respuesta no es "Y" o "N" entonces que diga igual "Opción no valida" pero simplemente se sale. :-\ :-\

Les adjunto el código que use para que me digan si tiene algo mal, gracias y me disculpo si no me exprese bien o no me di a entender.
Código:
@echo off
TITLE END PROCESS PRTOCOL
COLOR 07
echo Protocolo de Terminacion de Procesos Activado
echo.
echo.
echo Escriba el nombre de alguno de los siguientes procesos a Terminar...
echo.
echo -Chrome
echo -Spotify
echo -Discord
echo -Tor Browser
echo -Steam
echo -Skype
echo -Roblox
echo -Team Viewer
pause>nul
:CHJ
cls
echo ???
set/p JK=
if %JK%==Spotify goto Spo else goto CHW
if %JK%==Chrome goto C else goto CHW
if %JK%==Discord goto D else goto CHW
if %JK%==Tor Browser goto Tor else goto CHW
if %JK%==Steam goto Ste else goto CHW
if %JK%==Skype goto Sky else goto CHW
if %JK%==Roblox goto R else goto CHW
if %JK%==Team Viewer goto TV else goto CHW
:Spo
echo Terminando Proceso...
timeout /t 3 /nobreak >nul
taskkill /f /IM Spotify.exe >nul
echo Proceso terminado con exito :)
timeout /t 1 /nobreak >nul
echo ...
timeout /t 1 /nobreak >nul
goto A
:C
echo Terminando Proceso...
timeout /t 3 /nobreak >nul
taskkill /f /IM chrome.exe >nul
echo Proceso terminado con exito :)
timeout /t 1 /nobreak >nul
echo ...
timeout /t 1 /nobreak >nul
goto A
:D
echo Terminando Proceso...
timeout /t 3 /nobreak >nul
taskkill /f /IM Discord.exe >nul
echo Proceso terminado con exito :)
timeout /t 1 /nobreak >nul
echo ...
timeout /t 1 /nobreak >nul
goto A
:Tor
echo Terminando Proceso...
timeout /t 3 /nobreak >nul
taskkill /f /IM firefox.exe >nul
echo Proceso terminado con exito :)
timeout /t 1 /nobreak >nul
echo ...
timeout /t 1 /nobreak >nul
goto A
:Ste
echo Terminando Proceso...
timeout /t 3 /nobreak >nul
taskkill /f /IM Steam.exe >nul
echo Proceso terminado con exito :)
timeout /t 1 /nobreak >nul
echo ...
timeout /t 1 /nobreak >nul
goto A
:TV
echo Terminando Proceso...
timeout /t 3 /nobreak >nul
taskkill /f /IM Team Viewer.exe >nul
echo Proceso terminado con exito :)
timeout /t 1 /nobreak >nul
echo ...
timeout /t 1 /nobreak >nul
goto A
:Sky
echo Terminando Proceso...
timeout /t 3 /nobreak >nul
taskkill /f /IM Skype.exe >nul
echo Proceso terminado con exito :)
timeout /t 1 /nobreak >nul
echo ...
timeout /t 1 /nobreak >nul
goto A
:R
echo Terminando Proceso...
timeout /t 3 /nobreak >nul
taskkill /f /IM RobloxPlayerBeta.exe >nul
taskkill /f /IM RobloxPlayerLauncher.exe >nul
echo Proceso terminado con exito :)
timeout /t 1 /nobreak >nul
echo ...
timeout /t 1 /nobreak >nul
goto A
:kxc
echo Opciàn no Valida
echo.
goto A
:CHW
echo Opciàn no Valida
echo.
goto CHOOSE
:A
echo Desea Terminar otro proceso? [Y/N]
set/p OPC=
if %OPC%==Y goto CHJ else goto kxc
if %OPC%==y goto CHJ else goto kxc
if %OPC%==N exit else goto kxc
if %OPC%==n exit else goto kxc
Cabe destacar que yo revise el codigo bien, no se si me salte algo o simplemente tuve un error del que no me percate.

Gracias y espero que me puedan ayudar con este problemita que me surgio ;D


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Ayuda con un Error en Batch
« Respuesta #1 en: 19 Junio 2018, 18:17 pm »

Por donde empezar... hay muchas cosas incorrectas en el código. Lo más llamativo es que haces una repetición abusiva e innecesaria de código al escribir bloques de rutinas idénticas para hacer lo mismo solo que cambiando el nombre del proceso, en lugar de eso puedes escribir solamente una rutina, llamarla con el comando CALL y pasarle como argumento el nombre del proceso.

Aparte de lo que te funciona mal, los fallos de sintaxis del código como por ejemplo comparar cadenas de texto con espacios en blanco sin encerrar dichas cadenas, y lo que no logras saber como hacer, aparte de todo eso yo para empezar no entiendo por que tu idea inicial fue limitar el funcionamiento del código a un par de nombres de procesos contados, cuando en realidad puedes permitir que se escriba cualquier nombre de proceso, y así consiguirías un código más util y que requiera menos mantenimiento en futuras actualizaciones.

Esta sería una manera en la que podrías hacerlo:

Código
  1. @Echo OFF & (CHCP 1252)1>NUL
  2. TITLE END PROCESS PROTOCOL
  3. COLOR 07
  4.  
  5. :Main
  6. CLS
  7.  
  8. :: Print information.
  9. Echo:Protocolo de Terminacion de Procesos Activado
  10. echo Escriba el nombre de alguno de los siguientes procesos a terminar...
  11. Echo:-Chrome
  12. Echo:-Spotify
  13. Echo:-Discord
  14. Echo:-Tor Browser
  15. Echo:-Steam
  16. Echo:-Skype
  17. Echo:-Roblox
  18. Echo:-Team Viewer
  19. SET /P "processName=> "
  20. (Echo "%processName%"|Find.exe /I ".exe")1>NUL || (Set "processName=%processName%.exe")
  21.  
  22. :: Get running process count.
  23. For /F %%# In ('TaskList.exe /FO "CSV" ^| Find.exe /I /C """%processName%"""') DO (
  24.  Echo+
  25.  Echo:%%# proceso^(s^) encontrado^(s^) con nombre "%processName%"
  26.  If %%# EQU 0 (GoTo :Continue)
  27. )
  28.  
  29. :: Kill processes.
  30. (TaskKill.exe /F /T /IM "%processName%") 1>NUL && (
  31.    Echo+
  32.    Echo:Todos los procesos con nombre "%processName%" han sido terminados con éxito.
  33. ) || (
  34.    REM Echo+
  35.    REM Echo:Fallo al intentar terminar alguno de los procesos con nombre "%processName%"...
  36. )
  37.  
  38. :Continue
  39. Choice.exe /C "YN" /M "Desea terminar otro proceso?"
  40. If %ERRORLEVEL% EQU 1 (GoTo :Main)
  41. Exit /B 0

Saludos.


« Última modificación: 19 Junio 2018, 18:32 pm por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(Soclucionado) [BATCH] Ayuda con este batch! (%ERRORLEVEL%)
Scripting
SuperDraco 5 14,548 Último mensaje 23 Enero 2011, 15:23 pm
por SuperDraco
(SOLUCIONADO)[Batch] Error en codigo. Ayuda!
Scripting
Fran2013 2 3,711 Último mensaje 12 Noviembre 2013, 05:40 am
por Fran2013
[AYUDA][BATCH] Usar echo vacio en BATCH sin que diga que esta desactivado?
Scripting
Noxware 2 8,675 Último mensaje 6 Mayo 2014, 17:46 pm
por PedroDJavier
[AYUDA][BATCH] Poner contraseña con maximo de intentos en batch
Scripting
Rikosky 3 4,588 Último mensaje 12 Mayo 2014, 01:30 am
por daryo
¿Cual es el error que estoy cometiendo en este comando de batch? [BATCH]
Scripting
TheFerret 3 3,358 Último mensaje 14 Enero 2015, 21:27 pm
por TheFerret
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines