No se si es posible.
No, no es posible con Batch. Es un lenguaje bastante primitivo que en la mayoría de escenarios ni tan siquiera se le puede considerar un lenguaje de programación, es más bien una herramienta limitada (muy limitada) para principiantes. Lo cierto es que más bien es un lenguaje enfocado a la automatización de
tareas básicas de un usuaro normal y corriente, así que no le pidas mucho más al pobre Batch...
Como alternativa puedes construir una intefáz gráfica usando el lenguaje
WinBatch, que se caracteriza por usar una mezcla de sintaxis entre Batch y VisualBasic Script.
Pero en mi opinión lo mejor es que si realmente necesitas hacer cosas extravagantes como esta entonces te vayas olvidando de Batch y optes por un lenguaje de alto nivel que te permita llevar a cabo este tipo de tarea de una forma encapsulada y abstracta, como por ejemplo C# o VB.NET. Eso sería una opción genial, ya que con los miembros del espacio de nombres
System.Console puedes determinar la posición de la celda actual que se encuentra activa en el buffer de la consola, y con eso podrías intentar empezar a evaluar si se hizo click sobre una celda específica despues de haber obtenido la posición actual del mouse relativa a la ventana de la consola. En un principio suena tedioso, y debe serlo, ya que tienes que averiguar la longitud del texto y la posición actual dentro del buffer de salida de la consola, y también si ese texto está visible o no en el buffer, etc, pero con eso que te he dicho consigues obtener practicamente toda la información necesaría.
¡Un saludo!.
EDITO:En todo caso si podrías hacerlo con VBScript bajo wscript que es la versión gráfica de este.
No, ojo con las cosas que das por asumido. WScript.exe solamente es un intérprete para evaluar código de VisualBasic Script (o VBS) y JScript (o javascript for Windows) entre otros varios (vease la lista de motores de lenguajes soportados por Windows Script Host en la Wikipedia) que corran en modo gráfico (o GUI). Y CScript.exe es la versión del intérprete en modo consola (o CLI), pero esta diferencia entre que exista una versión en modo GUI y otra en modo CLI no significa que con VBS por si solo puedas construir una GUI, pues VBS no provee absolutamente ningún control, ni CheckBoxes ni ListBoxes, ni nada de nada... solamente un "InputBox" y la capacidad para mostrar MessageBoxes.
Dicho esto, cabe mencionar que en VBS se puede instanciar el objeto COM
InternetExplorer.Application para desarrollar una especie de GUI, pero esto es un procedimiento que genera un código resultante bastante engorroso y es una pérdida de tiempo por que basicamente lo que se está cosntruyendo es una aplicación HTML (puesto que se están consumiendo los controles que provee IE), y para ello hay una manera más sofisticada y más llevadera de construir ese tipo de GUI, lo cual daría como resultado un archivo con extensión .hta que puedes correr con el intérprete mshta.exe.
Ejemplo de una GUI HTA:
Script.hta<HTA:APPLICATION
APPLICATIONNAME="HTA Test"
SCROLL="yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="maximize"
>
Sub TestSub
Msgbox "Testing 1-2-3."
End Sub
<input type="button" value="Run Script" name="run_button" onClick="TestSub"><p>
Referencia al autor:
https://technet.microsoft.com/en-us/library/ee692768.aspxEjemplo de una GUI VBS:
Script.vbsOption Explicit
Dim aOpt(4)
aOpt(0) = "Option 1"
aOpt(1) = "Option 2"
aOpt(2) = "Option 3"
aOpt(3) = "Option 4"
aOpt(4) = "Option 5"
wsh.echo "You selected:", SelectBox("Select an option", aOpt)
Function SelectBox(sTitle, aOptions)
Dim oIE, s, item
set oIE = CreateObject("InternetExplorer.Application")
With oIE
.ToolBar = False : .RegisterAsDropTarget = False
.StatusBar = False : .Navigate("about:blank")
While .Busy : WScript.Sleep 100 : Wend
With .document
With .parentWindow
if Instr(.navigator.appVersion, "MSIE 6") > 0 Then
oIE.FullScreen = True
End if
oIE.width = 400 : oIE.height = 150
oIE.left = .screen.width \ 2 - 200
oIE.top = .screen.height\ 2 - 75
End With ' ParentWindow
s = "<html><head><title>" & sTitle & " " & String(80, ".") _
& "</title></head><script language=vbs>bWait=true</script>" _
& "<body bgColor=Silver><center><b>" & sTitle & "<b><p>" _
& "<select id=entries size=1 style='width:250px'>" _
& " <option selected>" & sTitle & "</option>"
For each item in aOptions
s = s & " <option>" & item & "</option>"
Next
s = s & " </select><p>" _
& "<button id=but0 onclick='bWait=false'>OK</button>" _
& "</center></body></html>"
.WriteLn(s)
With .body
.scroll="no"
.style.borderStyle = "outset"
.style.borderWidth = "3px"
End With ' Body
.all.entries.focus
oIE.Visible = True
On Error Resume Next
While .ParentWindow.bWait
WScript.Sleep 100
if oIE.Visible Then SelectBox = "Aborted"
if Err Then Exit Function
Wend ' Wait
On Error Goto 0
With .ParentWindow.entries
SelectBox = .options(.selectedIndex).text
End With
End With ' document
.Visible = False
End With ' IE
End Function
Referencia al autor:
https://social.technet.microsoft.com/Forums/scriptcenter/en-US/63802c32-fec3-4d83-8036-b37f46d3fe75/gui-for-vbs?forum=ITCG¡Saludos!