Crear respuestas de comando mediante archivos bat

Iniciado por Dankhrat, 4 Marzo 2014, 22:55 PM

0 Miembros y 3 Visitantes están viendo este tema.

Dankhrat

Hola, bueno soy nuevo en este tema de comandos y me gustaría saber si se puede crear un archivo .bat o algo que se le asimile para crear respuestas en cmd.

Por ejemplo

Al escribir net user "usuario" *
Cmd pregunta que contraseña es la que quiero, ¿no hay una forma de crear un archivo que responda de manera automática lo que CMD me pregunte?

Esto aplica para casos similares, de antemano muchas gracias

Eleкtro

Puedes redirigir la salida del comando Echo, al Input de otro comando, pero esto no siempre funcionará en todos los casos.

Código (dos) [Seleccionar]
Echo CONTRASEÑA|Net.exe user "usuario" *

Código (dos) [Seleccionar]
Echo S|Choice.exe

Saludos








Dankhrat

Mmm, me resulta interesante, solo que el comando se salta las opciones, cuando me pregunta la contraseña nueva inmediatamente se salta a la confirmación y me dice que el comando se completo exitosa mente, esto resuelve la mitad de mi problema, pero lo que quiero es que se responda solo, con una información previamente digitada, no se si escribí algo mal, de todas formas te agradecería me explicaras a mas detalle la sintaxis del comando con ejemplos y si no se pude hacer así,  explicarme otra forma de hacer lo que quiero, por ahí escuche algo acerca de script pero como te dije soy nuevo en esto y agradecería mucho la ayuda .

Eleкtro

#3
Cita de: dan0727 en  5 Marzo 2014, 18:09 PMel comando se salta las opciones, cuando me pregunta la contraseña nueva inmediatamente se salta a la confirmación y me dice que el comando se completo exitosa mente

No es que 'se salte las opciones', es que se computan automáticamente los caracteres de la salida del comando 'Echo' al 'Input' del otro comando después de la 'Pipe',
ese es el único modo de poder 'responder' al 'Input' de otro comando en Batch, se denomina rediceccionamiento de comando.

En resumen, es como si escribieses automáticamente y presionases la tecla 'Enter' para aceptar el 'Input'.


Cita de: dan0727 en  5 Marzo 2014, 18:09 PMpero lo que quiero es que se responda solo, con una información previamente digitada

No se exáctamente a que te refieres, ¿lo que quieres es establecer previamente el valor que quieres redirigir?, entonces puedes setearlo en una variable, por ejemplo, esto responderá automáticamente 'N' ('False') a una pregunta 'Booleana':

Código (dos) [Seleccionar]

@Echo OFF
Set "Var=N"

Echo %Var%|Choice



Cita de: dan0727 en  5 Marzo 2014, 18:09 PMte agradecería me explicaras a mas detalle la sintaxis del comando con ejemplos

Aquí puedes aprender más acerca del redireccionamiento de comandos ~> http://ss64.com/nt/syntax-redirection.html


Cita de: dan0727 en  5 Marzo 2014, 18:09 PMsi no se pude hacer así,  explicarme otra forma de hacer lo que quiero

No existe ninguna otra forma de 'responder', al menos usando puro y limitado Batch.

Lo más parecido que puedes hacer es usar un lenguaje de verdad, o aplicaciones 'CommandLine' de terceros (como por ejemplo Nircmd.exe o Sendkeys.exe) para enviar las pulsaciones del teclado que desees al foco de una instancia de la 'CMD.exe'.

· VBScript - SendKeys Method | TechNet  +  VBScript - Sendkeys Method | SS64

· NirCMD | NirSoft

PD: Por lenguaje de verdad tampoco me refiero a 'VisualBasicScript'.




EDITO:

Porfavor, no formularme preguntas por mensaje privado.


CitarMe gustaría aclarar si lo que pido ¿se resuelve con archivos .bat o con script?

Un archivo .bat es un Script.

· Scripting language | Wikipedia

· Batch file | Wikipedia

· Scripting languages | Wikipedia


Citary de ser esto ultimo, ¿que es lo que necesito saber para conseguirlo?

Simplemente necesitarías aprender lo básico del lenguaje, pero si no quieres aprender lo básico puedes aprender diréctamente el uso (la sintaxis) de los métodos que dispone del lenguaje para enviar pulsaciones del teclado, y la documentación de dichos métodos la puedes encontrar en la referencia oficial de cada lenguaje, si es que a eso te refieres con la pregunta, no tengo muy claro lo que quieres.

Cualquier lenguaje (decente) te serviría (Ej: Ruby, Python, C++, CSharp, VB, VB.NET, etc...), o cualquier lenguaje inferior de Scripting orientado a la automatización de tareas (Ej: VBScript, Powershell, LUA, etc...), o cualquier software de tipo 'Macro Recorder' para grabar y reproducir acciones ('Macros'), en fín prácticamente es una tarea que la puedes llevar a cabo de forma sencilla de muchas maneras, pero no usando como herramienta el triste e inutil Batch.


Saludos!








Dankhrat

Muchas gracias por las aclaraciones, intentare digerir poco a poco todo esto, saludos

Dankhrat

CitarPuedes redirigir la salida del comando Echo, al Input de otro comando

Citarentonces puedes setearlo en una variable, por ejemplo, esto responderá automáticamente 'N' ('False') a una pregunta 'Booleana'

En ambos casos el usuario quedaba sin contraseña, así digité el comando

echo 123|net.exe user daniel *

Lo intente de otra forma

echo 123|net user daniel *

y por ultimo de esta forma

@echo off
set var=123
echo %var%|net user daniel *

En todos los casos el resultado fue el mismo, el usuario quedaba sin contraseña, quizás sea la excepcion de la que hablabas

Citarpero esto no siempre funcionará en todos los casos.

Eleкtro

El comando espera el input por parte del usuario 2 veces consecutivas, una para introducir la contraseña, y otra para confirmarla. Si, lamentáblemente esta es una de esas excepciones.

De todas formas he notado que la sintaxis del comando permite especificar una nueva contraseña para la cuenta del usuario, diréctamente:
Net.exe user "Daniel" "Contraseña"

Y eso no requiere confirmación.

Saludos!








Dankhrat

Efectivamente así es, una vez mas gracias y saludos!