Ms-Dos - asignar elemento de array a una variable

 
Vista:
sin imagen de perfil

asignar elemento de array a una variable

Publicado por Hipolito (2 intervenciones) el 13/10/2021 12:13:37
Hola, realmente no sé si se puede hacer lo siguiente.

Me gustaría poder asignar dentro de un script batch lo siguiente

variable=elem[i]

ya tengo esto

Set /a i=0
for /f "tokens=*" %%M in (temp3.txt) do (
Set /a i+=1
Set "elem[!i!]=%%M
Set "elem5[!i!]=NO

y luego en algún lugar del programa algo como esto, pero no funciona:

FOR /L %%V IN (1, 1, %i%) DO
(
IF !elem5[!V!]!==SI (echo !elem5[%%V]!>>temp9.txt)
else (echo ..... era NO)
)


realmente no funciona lo siguiente

IF !elem5[!V!]!==SI

alguien sabe porqué....gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

asignar elemento de array a una variable

Publicado por Antoni Masana (811 intervenciones) el 13/10/2021 15:51:51
Prueba esto:

1
2
3
4
5
6
7
8
FOR /L %%V IN (1, 1, %i%) do Call :Trata %%V
goto :EOF
 
:Trata
    set V=%1
    IF !elem5[!V!]!==SI (echo !elem5[%%V]!>>temp9.txt)
    else (echo ..... era NO)
    goto :EOF

Y dale un vistazo al comando SETLOCAL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
C:\>setlocal /?
Comienza la sección de cambios locales de entorno en un archivo por lotes.
Los cambios de entorno hechos después de que se haya emitido SETLOCAL son
locales en el archivo por lotes. ENDLOCAL debe ser emitido para restaurar
la configuración anterior. Cuando se llega al final de un script
por lotes, se ejecuta un ENDLOCAL implícito para cualquier comando SETLOCAL
pendiente que se haya emitido para este un script por lotes.
 
SETLOCAL
 
Si las extensiones de comando están habilitadas, SETLOCAL cambia así:
 
Ahora el comando por lotes SETLOCAL acepta argumentos opcionales:
        ENABLEEXTENSIONS / DISABLEEXTENSIONS
            Habilita o deshabilita las extensiones del procesador de comandos.
            Estos argumentos tienen prioridad sobre los modificadores CMD E:ON
            o /E:OFF. Vea CMD /? para obtener más detalles.
        ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
            Habilita o deshabilita la expansión de variables de entorno
            retrasada. Estos argumentos tienen prioridad sobre los
            modificadores CMD /V:ON o /V:OFF. Vea CMD /? para obtener más
            detalles.
Estas modificaciones duran hasta que coincida el comando ENDLOCAL,
independientemente de su configuración anterior para el comando SETLOCAL.
 
El comando SETLOCAL establecerá el valor de ERRORLEVEL si se diera un
argumento. Será cero si se da uno de los dos argumentos válidos y el otro no.
Puede usar esto en los scripts por lotes para determinar si las extensiones
están disponibles con la siguiente técnica:
 
    VERIFY OTHER 2>null
    SETLOCAL ENABLEEXTENSIONS
    IF ERRORLEVEL 1 echo No puede habilitar las extensiones
 
Esto funciona porque, en las versiones anteriores de CMD.EXE, SETLOCAL
NO establecía el valor de ERRORLEVEL. El comando VERIFY con un argumento
erróneo inicializa el valor de ERROLEVEL a un valor distinto de cero.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

asignar elemento de array a una variable

Publicado por Hipolito (2 intervenciones) el 15/10/2021 20:05:41
Muchas gracias. Genial.
El sistema no me deja valorarlo. Mi máxima nota y mi agradecimiento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar