Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: dijsktra en 29 Noviembre 2019, 15:52 PM

Título: leer un array por entrada estandar (cmd)
Publicado por: dijsktra en 29 Noviembre 2019, 15:52 PM
Hola.
Tengo experiencia en C pero me gustaría aprender el criptico command.com

Hay algunos tutoriales en la sección de mensajes fijos, pero no encuentro la respuesta.

Se que

set /P VAR=

Lee un escalar. Pero no consigo leer un array por entrada estandar.

algo como

for %%i in (0,1,10) do (
  set /P A[%%i]=
)

Que desde luego, no funciona. si alguien puede decirme...
Título: Re: leer un array por entrada estandar (cmd)
Publicado por: @XSStringManolo en 29 Noviembre 2019, 19:53 PM
Se llama batch https://www.tutorialspoint.com/batch_script/batch_script_arrays.htm
Título: Re: leer un array por entrada estandar (cmd)
Publicado por: dijsktra en 29 Noviembre 2019, 21:01 PM
Gracias, esa página ya la vi antes de consultar, y no encontré la respuesta. Necesito tomar los datos de la entrada estándar.
Título: Re: leer un array por entrada estandar (cmd)
Publicado por: EdePC en 1 Diciembre 2019, 04:29 AM
Saludos,

- Dependerá del formato de tu entrada, por ejemplo:

001 [espacio] 002 [espacio] 003 [espacio] ...

001 [enter] 002 [enter] 003 [enter] ...

001,002, 003


etc.

- Tratando de entender tu código previo deduzco que quieres el tipo 001 [enter] 002 [enter] ..., aunque no sé que parte no funciona o que salida deseas obtener. A mí me funciona lo siguiente:

Código (dos) [Seleccionar]
@Echo Off

For /L %%i In (0, 1, 5) Do (
  Set /P A[%%i]=
)

For /L %%i In (0, 1, 5) Do (
  Set A[%%i]
)

Pause


001
002
003
004
005
006
A[0]=001
A[1]=002
A[2]=003
A[3]=004
A[4]=005
A[5]=006
Presione una tecla para continuar . . .


- Si quieres entradas tipo C como 001 [espacio] 002 [espacio] ... tienes que guardar esa String en la variable y luego hacerle un Split con For y quizá tokens y/o delims XD