unificar 2 bat

Iniciado por egiptoelcairo, 15 Octubre 2011, 23:20 PM

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

egiptoelcairo

hola buenas e hecho estos dos bat y queria unificarlos en 1 solo el primero se llama premium y el segundo normal lo que quiero es que cuando ejecute el programa que me pregunte cual quiero ejecutar premium o normal y yo tenga que poner 1 o 2 segun la opción y que no tenga que dar a enter encuanto ponga el numero se ejecute el programa gracias

premium
@echo off
@ipconfig/release
@netsh interface ip set dns "Conexion de area local" static x.x.x.x
@netsh interface ip add dns "Conexion de area local" x.x.x.x
@pconfig/renew "Conexion de area local"

normal
@echo off
@ipconfig/release
@netsh interface ip set dns "Conexion de area local" static none
@ipconfig/renew

Chazy Chaz

#1
Hola egiptoelcairo

Lo que pides no es nada complicado. Lo de get char te lo dejo ati. Porque creo que no se puede. Si alguien lo sabe que no se corte. Suerte.

ECHO OFF
CLS
:MENU
CLS
ECHO.
ECHO ...............................................
ECHO PRESS 1 or 2 to select your task, or 3 to EXIT.
ECHO ...............................................
ECHO.
ECHO 1 - Use Premium
ECHO 2 - Use Normal
ECHO 3 - EXIT
ECHO.
SET /P X=Type 1, 2, or 3, then press ENTER:
IF %X%==1 GOTO PREMIUM
IF %X%==2 GOTO NORMAL
IF %X%==3 GOTO EOF
:PREMIUM
CLS
ECHO This is the premium option
***TU CODIGO AKI***
PAUSE
GOTO MENU
:NORMAL
CLS
ECHO This is the normal option
***TU CODIGO AKI***
PAUSE
GOTO MENU

egiptoelcairo

no existe ninguna opcion para no tener que presionar enter despues?

Chazy Chaz

Te va la vida en ello?? Tan solo es presionar ENTER xD

egiptoelcairo

esque eso era la gracia  para reducir las teclas   

Eleкtro

#5
Que yo sepa unificar es juntar, y tú lo que pides ni se asemeja xDDD

Lo que pides es IMPOSIBLE de realizar, usando la consola sin ayuda. Así que cuanto más complicado, más cosas hay que hacer... Lo que quiero decir es que con esto te ahorrarás el "ENTER", Sí, pero en vez de un batch deberás usar 3, además de 2 vbs.

1-Batch principal (MENÚ)
2--VBS hotkey Normal.vbs
3---VBS hotkey Premium.vbs
4----Batch normal
5-----Batch premium

Nota: Parece mucho, pero no te preocupes, TODO lo puedes simplificar en un ÚNICO BATCH sin usar nada más, abajo del todo te dejo un ejemplo.

El método es un VBS para crear un acceso directo para que cuando presiones "1" o "2" se ejecutase el batch que quieres... Vamos, como si fuera un "hotkey" temporal, lo ejecutas antes del "Set /p" y listo.

El vbs de ejemplo sería este:

Código (vb) [Seleccionar]
Option Explicit
Dim objShell, objDesktop, objLink
Dim strAppPath, strWorkDir, strIconPath

strWorkDir = "%SystemRoot%"
strAppPath = "%SystemRoot%\notepad.exe"
strIconPath = "%SystemRoot%\system32\SHELL32.dll,17"

Set objShell = CreateObject("WScript.Shell")
objDesktop = objShell.SpecialFolders("Desktop")
Set objLink = objShell.CreateShortcut(objDesktop & "\NOTEPAD.lnk")

objLink.Description = "NOTEPAD"
objLink.HotKey = "CTRL+N"
objLink.IconLocation = strIconPath
objLink.TargetPath = strAppPath
objLink.WindowStyle = 3
objLink.WorkingDirectory = strWorkDir
objLink.Save

WScript.Quit

(Al apretar CONTROL+N se abre el notepad)

O también puedes usar la herramienta Colous desde Batch, la encontrarás en el foro, pero no se utilizar correctamente esa función, aunque también encontrarás la información necesaria en el foro.

Aqui te dejo los 5 archivos para que lo veas tú mismo, ya está todo configurado, menos el batch premium y normal porque no los tengo... Solo tienes que descomprimir, y usar el menu.batch.



¿¿¿¿Y como se puede simplificar todo lo que he mencionado, solamente usando un batch??? pues muy fácil, así:


Código (dos) [Seleccionar]
@ECHO OFF

REM EleKtrO H@ckeR



REM Creamos el batch normal y premium.

echo @echo off > "%TEMP%\Normal.bat"
echo echo Este es el batch premium. >> "%TEMP%\Normal.bat"
echo Pause >nul >> "%TEMP%\Normal.bat"
echo exit >> "%TEMP%\Normal.bat"


echo @echo off > "%TEMP%\premium.bat"
echo echo Este es el batch premium. >> "%TEMP%\premium.bat"
echo Pause >nul >> "%TEMP%\premium.bat"
echo exit >> "%TEMP%\premium.bat"



REM Creamos los hotkeys

REM echo Option Explicit>"%TEMP%\Normal.vbs"
REM echo Dim objShell, objDesktop, objLink>>"%TEMP%\Normal.vbs"
REM echo Dim strAppPath, strWorkDir, strIconPath>>"%TEMP%\Normal.vbs"
REM echo strWorkDir = "%TEMP%">>"%TEMP%\Normal.vbs"
REM echo strAppPath = "%TEMP%\Normal.bat">>"%TEMP%\Normal.vbs"
REM echo strIconPath = "%SystemRoot%\system32\SHELL32.dll,17">>"%TEMP%\Normal.vbs"
REM echo Set objShell = CreateObject("WScript.Shell")>>"%TEMP%\Normal.vbs"
REM echo objDesktop = objShell.SpecialFolders("Desktop")>>"%TEMP%\Normal.vbs"
REM echo Set objLink = objShell.CreateShortcut(objDesktop & "\Normal.lnk")>>"%TEMP%\Normal.vbs"
REM echo objLink.Description = "Normal">>"%TEMP%\Normal.vbs"
REM echo objLink.HotKey = "2">>"%TEMP%\Normal.vbs"
REM echo objLink.IconLocation = strIconPath>>"%TEMP%\Normal.vbs"
REM echo objLink.TargetPath = strAppPath>>"%TEMP%\Normal.vbs"
REM echo objLink.WindowStyle = 3>>"%TEMP%\Normal.vbs"
REM echo objLink.WorkingDirectory = strWorkDir>>"%TEMP%\Normal.vbs"
REM echo objLink.Save>>"%TEMP%\Normal.vbs"
REM echo WScript.Quit>>"%TEMP%\Normal.vbs"

REM echo Option Explicit>"%TEMP%\Premium.vbs"
REM echo Dim objShell, objDesktop, objLink>>"%TEMP%\Premium.vbs"
REM echo Dim strAppPath, strWorkDir, strIconPath>>"%TEMP%\Premium.vbs"
REM echo strWorkDir = "%TEMP%">>"%TEMP%\Premium.vbs"
REM echo strAppPath = "%TEMP%\Premium.bat">>"%TEMP%\Premium.vbs"
REM echo strIconPath = "%SystemRoot%\system32\SHELL32.dll,17">>"%TEMP%\Premium.vbs"
REM echo Set objShell = CreateObject("WScript.Shell")>>"%TEMP%\Premium.vbs"l
REM echo objDesktop = objShell.SpecialFolders("Desktop")>>"%TEMP%\Premium.vbs"
REM echo Set objLink = objShell.CreateShortcut(objDesktop & "\Premium.lnk")>>"%TEMP%\Premium.vbs"
REM echo objLink.Description = "Premium">>"%TEMP%\Premium.vbs"
REM echo objLink.HotKey = "1">>"%TEMP%\Premium.vbs"
REM echo objLink.IconLocation = strIconPath>>"%TEMP%\Premium.vbs"
REM echo objLink.TargetPath = strAppPath>>"%TEMP%\Premium.vbs"
REM echo objLink.WindowStyle = 3>>"%TEMP%\Premium.vbs"
REM echo objLink.WorkingDirectory = strWorkDir>>"%TEMP%\Premium.vbs"
REM echo objLink.Save>>"%TEMP%\Premium.vbs"
REM echo WScript.Quit>>"%TEMP%\Premium.vbs"



REM Copiamos e iniciamos los "hotkeys"

Copy /y "*.vbs" "%TEMP%\" >nul 2>&1

"%TEMP%\Normal.vbs"
"%TEMP%\Premium.vbs"

REM Mostramos el menú...

:MENU
ECHO+
ECHO ...............................................
ECHO PRESS 1 or 2 to select your task, or 3 to EXIT.
ECHO ...............................................
ECHO+
ECHO 1 - Use Premium
ECHO 2 - Use Normal
ECHO 3 - EXIT
ECHO+
Echo Type 1, 2, or 3, Then press ENTER:
Pause >nul



REM Por último, Borramos la basurilla y finalizamos

Del /Q "%TEMP%\Normal.bat";"%TEMP%\Premium.bat" >nul
Del /Q "%TEMP%\Normal.vbs";"%TEMP%\Premium.vbs" >nul
Del /Q "%userprofile%\desktop\Normal.lnk";"%userprofile%\desktop\Premium.lnk" >nul
exit


EDITO: BUENO me acabo de dar cuenta que los VBS contienen caracteres especiales & así que el batch no puede simplificar los vbs, no puedes escribir los vbs desde el batch, pero si que sirve para crear los otros dos batch. así que borra la parte de "creamos las hotkeys", y haz un "copy /Y con los 2 .VBS xD. Bueno ya lo he editado el batch con el copy /Y.

Saludos.
EleKtrO H@ckeR.