concatenar variables en ms-dos

Todo sobre los distintos SSOO de Windows

Moderador: Moderadores

concatenar variables en ms-dos

Notapor Cyathogoku » Mar Dic 19, 2006 9:53 pm

Tengo un problema con un codigo que es el siguiente

Código: Seleccionar todo

@ECHO OFF

REM ADMINISTRADOR DE OBJETOS EN EL DIRECTORIO ACTIVO Y EN LA SAM PRE WINDOWS 2003
REM BY CYATHOGOKU POWERED BY J0S3

REM ==========================
REM    VARIBLES ENTORNO LOCAL
REM ==========================


SET nop=1
SET mo='
SET mdomain='
SET qsd='
SET sdomain='
SET nosd='
SET asgusr='
SET csd='
SET objname='

GOTO menu1

REM ======================
REM       AVISOS
REM ======================

:ninsertop

ECHO.
IF %in% GTR 0 ECHO Introduzca una opcion valida. && PAUSE > NUL && GOTO redirectninsertop
IF %nsd%==' ECHO Introduzca nombre de subnivel. && PAUSE > NUL && GOTO redirectninsertop
IF %nosd% LSS 1 ECHO Valor minimo 1. && PAUSE > NUL && GOTO redirectninsertop
IF %md%==1 ECHO Introduzca el nombre del dominio principal. && PAUSE > NUL && GOTO redirectninsertop


:redirectninsertop

IF %in%==1 SET in=' && GOTO menu1
IF %in%==2 SET in=' && GOTO menu2
IF %in%==3 SET in=' && GOTO menu3
IF %in%==4 SET in=' && GOTO menud1
IF %md%==1 SET md=' && GOTO rc2
IF %in%==5 SET in=' && GOTO csd
IF %in%==6 SET in=' && GOTO cont1
IF %in%==7 SET in=' && GOTO rc

:incorrectop

ECHO.
ECHO Introduzca un valor del menu
PAUSE > NUL

IF %e%==1 SET e=' && GOTO menu1
IF %e%==2 SET e=' && GOTO menu2
IF %e%==3 SET e=' && GOTO menu3

:salir

ECHO.
SET /p salir=Seguro que quiere salir?[y/n]:
IF /i %salir%==n GOTO redirectsalir
GOTO fin

:redirectsalir

SET opcion='
IF %s%==1 SET s=' && GOTO menu1

REM ======================
REM        MENUES
REM ======================

:menu1

SET opcion='
CLS
ECHO.
ECHO 1.Windows NT 3.x/4.x Windows Wk2 SERVER
ECHO 2.Windows 2003 SERVER
ECHO 3.Salir
ECHO.
SET /p opcion=Trabajar en servidor:

IF %opcion%==' SET in=1 && GOTO ninsertop
IF %opcion% GTR 3 SET e=1 && GOTO incorrectop
IF %opcion% LSS 1 SET e=1 && GOTO incorrectop
IF %opcion%==1 SET os=1
IF %opcion%==3 SET s=1 && GOTO salir
IF %opcion%==2 SET os=2

:menu2

SET opcion='
CLS
ECHO.
ECHO %nop%.Crear
SET /a nop+=1
ECHO %nop%.Editar
SET /a nop+=1
IF %os% LSS 3 ECHO %nop%.Borrar
SET /a nop+=1
IF %os%==1 ECHO %nop%.Asignar && SET /a nop+=1
IF %os%==2 ECHO %nop%.Mover
IF %os% LSS 3 ECHO 0.Atras
SET nop=1
ECHO.
SET /p opcion=Quiero:

IF %opcion%==' SET in=2 && GOTO ninsertop
IF %os%==1 ECHO. && IF %opcion% GTR 3 SET e=2 && GOTO incorrectop
IF %os%==2 ECHO. && IF %opcion% GTR 4 SET e=2 && GOTO incorrectop
IF %opcion%==1 SET lookmenu=crear && IF %os%==2 SET accion=add && IF %os%==1 SET cnetf=add
IF %opcion%==2 SET lookmenu=editar && IF %os%==2 SET accion=mod
IF %opcion%==3 SET lookmenu=borrar && IF %os%==2 SET accion=rm && IF %os%==1 SET cnetf=del
IF %opcion%==4 SET lookmenu=mover && IF %os%==2 SET accion=move
IF %opcion%==0 GOTO menu1

:menu3

SET opcion='
CLS
ECHO.
IF %os% LSS 3 ECHO %nop%.Grupo
SET /a nop+=1
IF %os% LSS 3 ECHO %nop%.Ordenador
SET /a nop+=1
IF %os% LSS 3 ECHO %nop%.Usuarios
SET /a nop+=1
IF %os%==2 ECHO %nop%.Unidad Organizativa
ECHO.
SET nop=1
SET /p opcion=Quiero %lookmenu%:

IF %opcion%==' SET in=3 && GOTO ninsertop
IF %os%==1 ECHO. && IF %opcion% GTR 3 SET e=3 && GOTO incorrectop
IF %os%==2 ECHO. && IF %opcion% GTR 4 SET e=3 && GOTO incorrectop
IF %opcion%==1 SET lookobjeto=Grupo && SET z=group && SET t='
IF %opcion%==2 SET lookobjeto=Ordenadores && SET z=computer && SET t='
IF %opcion%==3 SET lookobjeto=usuario && SET z=user && SET t='
IF %opcion%==4 SET lookobjeto=unidad organizativa && SET z=ou && SET t='
SET opcion='

IF %os%==2 GOTO rc2
IF %os%==1 GOTO rc

REM ======================
REM   RUTINAS COMUNES
REM ======================

REM DOMINIO
REM =======

:rc2

CLS
ECHO Ejemplo de dominio pricipal (ayayay.net)
ECHO.
SET /p mdomain=Dominio Principal:

IF %mdomain%==' SET md=1 && GOTO ninsertop
ECHO.

:menud1

SET /p qsd=Va a trabajar con subdominio en el dominio principal %mdomain% [y/n]:
IF %qsd%==' SET in=4 GOTO ninsertop
IF /i %qsd%==n GOTO ncsd
IF /i %qsd%==y GOTO csd
SET in=4
GOTO ninsertop

:ncsd

SET domain=DC=%mdomain:~,-4%,DC=%mdomain:~-3%"
GOTO spd

:csd

SET csd=1

SET /p nosd=Indique cuantos subniveles del dominio principal %mdomain% necesita:
IF %nosd%==' SET in=5 GOTO ninsertop
IF %nosd% LSS 1 SET in=5 GOTO ninsertop
SET /a cdom=1

:cont1

SET /p nsd=Nombre subnivel %cdom%:
IF %nsd%==' SET in=6 GOTO ninsertop
IF NOT %sdomain%==' SET sdomain=DC=%nsd%,%sdomain%
IF %sdomain%==' SET sdomain=DC=%sd%,
IF %nosd%==%cdom% GOTO spd
SET /a cdom+=1
GOTO cont1

:spd

IF %csd%==1 SET domain=%sdomain%%mdomain:~,-4%,DC=%mdomain:~-3%

GOTO rc

:rc

CLS
ECHO.
ECHO Va a %lookmenu% un/a %lookobjeto%
ECHO.
SET /p objname=Nombre %lookobjeto%:
IF %objname%==' SET in=7 GOTO ninsertop
GOTO paraop

:paraop

SET /p oppara=Quiere establecer parametros opcionales[y/n]:
IF %oppara%==y GOTO vaciarpar
IF %oppara%==n GOTO createobj

REM VACIAMOS PARAMETROS
REM ===================

:vaciarpar

SET opcion='
CLS
SET par='
SET no=1

:vacpar

SET par%no%="
IF %os%==1 GOTO ifos1
IF %os%==2 GOTO ifos2

:ifos1

IF %lookobjeto%==usuario ECHO. && IF %no%==13 GOTO qso
IF %lookobjeto%==grupo ECHO. && IF %no%==1 GOTO qso
GOTO continuevacpar

:ifos2

IF %lookobjeto%==unidad organizativa ECHO. && IF %no%== GOTO qso
IF %lookobjeto%==grupo ECHO. && IF %no%== GOTO qso
IF %lookobjeto%==ordenador ECHO. && IF %no%== GOTO qso
IF %lookobjeto%==usuario ECHO. && IF %no%== GOTO qso

:continuevacpar

IF %os%
SET /a no+=1
GOTO vacpar

:qso

IF %os%==1 GOTO apos1
IF %os%==2 GOTO apos2

REM RELLENAMOS PARAMETROS TOTALES
REM ==============================

:seguir

SET no=1
SET tp="

:meter

IF par%no%==' GOTO sp
IF %tp%==' SET tp=%par%no%%
IF not %tp%==' SET tp=%tp% %par%no%%

:sp

IF %no%==5 GOTO bye
SET /a no+=1
GOTO meter

REM ======================
REM   MENUES PARAMETROS
REM ======================

:apos1


IF %lookobjeto%==usuario GOTO muser
IF %lookobjeto%==grupo SET /p desc=Descripcion %lookobjeto%: && SET para1= /comment:%desc% && GOTO createobjnt

:muser

ECHO %nop%.Activar Cuenta %lookobjeto%
SET /a nop+=1
ECHO %nop%.Anadir comenterio al %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Establecer codigos pais/region para %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Caducidad de la cuenta del %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Establecer nombre completo del %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Establecer directorio relativo del %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Establecer cambio contreseña por el %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Contraseña obligatoria para el %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Establecer ruta del perfil para el %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Establecer ruta de secuencia de comandos de inicio de sesion para el %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Establecer horario de uso permitido para el %lookobjeto% %objname%
SET /a nop+=1
ECHO %nop%.Establecer los equipos donde puede iniciar sesion el %lookobjeto% %objname%)
SET nop=1
IF %lookobjeto%==grupo ECHO %nop%.Anadir comenterio al %lookobjeto% %objname%
PAUSE
GOTO seguir


:apos2

PAUSE
GOTO seguir

CLS


REN ======================
REM  RUTINAS ESPECIFICAS
REM ======================
REM ======================
REM     FIN PROGRAMA
REM ======================

EXIT


Esta sin terminar asi qeu no lo ejecuteis ni nada solo os ira una parte, es la reescritura de un programita para administrar redes windows, cuando termine de reescribir este empezaré a reescribir el que administre todo el directorio activo.

El problema viene cuando quiero concatenar variables aqui

Código: Seleccionar todo
REM RELLENAMOS PARAMETROS TOTALES
REM ==============================

:seguir

SET no=1
SET tp='

:meter

IF par%no%==' GOTO sp
IF %tp%==' SET tp=%par%no%%
IF not %tp%==' SET tp=%tp% %par%no%%

:sp

IF %no%==5 GOTO bye
SET /a no+=1
GOTO meter


Alguien sabe como concatenar variables en ms-dos??

Saludos a todos
Cyathogoku
:-D
:-D
 
Mensajes: 142
Registrado: Lun May 15, 2006 3:31 am

Notapor el_chaman » Mar Dic 19, 2006 9:55 pm

Hola:

¿No basta con poner:

Código: Seleccionar todo

SET foobar=%foo%%bar%



?
-<|:·P

Baga, biga, higa
laga, boga, sega
zain, zoi, bele
harma, tiro, pun

Xirristi-mirristi
gerrena plast
olio-zopa
kikili salda
urrup edan edo klik

¡Ikimilikiliklik!




Imagen
Avatar de Usuario
el_chaman
<|:-D
<|:-D
 
Mensajes: 1677
Registrado: Vie Mar 25, 2005 3:01 pm
Ubicación: Pucelagorri, distrito Cuadrante Gamma (WA)

Notapor Cyathogoku » Mar Dic 19, 2006 10:34 pm

Eso no funciona.

Por ejemplo:

Tienes una variable llamada v1 y asi vn veces, lo que necesito es cambiar cambir a traves de un contador el ultimo valor de la variable v1....vn veces a traves de un bucle.

te pongo un ejemplo para que lo puedas entender porque yo no lo he conseguido.

Código: Seleccionar todo

FOR /L %a IN (1,1,10) DO IF %v%a%==' ECHO vacio.


Gracias
Saludos
Cyathogoku
:-D
:-D
 
Mensajes: 142
Registrado: Lun May 15, 2006 3:31 am

Notapor el_chaman » Mar Dic 19, 2006 10:38 pm

Hola:

Nono:

Mira
Código: Seleccionar todo
Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\luis>set foo=a

C:\Documents and Settings\luis>set bar=b

C:\Documents and Settings\luis>echo %foo%%bar%
ab

C:\Documents and Settings\luis>set c=%foo%%bar%

C:\Documents and Settings\luis>echo %c%
ab

C:\Documents and Settings\luis>



"Mete" en u8na variable la concat5enación y entonces compara.

Saludos!
-<|:·P

Baga, biga, higa
laga, boga, sega
zain, zoi, bele
harma, tiro, pun

Xirristi-mirristi
gerrena plast
olio-zopa
kikili salda
urrup edan edo klik

¡Ikimilikiliklik!




Imagen
Avatar de Usuario
el_chaman
<|:-D
<|:-D
 
Mensajes: 1677
Registrado: Vie Mar 25, 2005 3:01 pm
Ubicación: Pucelagorri, distrito Cuadrante Gamma (WA)

Notapor Cyathogoku » Mié Dic 20, 2006 7:18 pm

el_chaman escribió:
Código: Seleccionar todo
Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\luis>set foo=a

C:\Documents and Settings\luis>set bar=b

C:\Documents and Settings\luis>echo %foo%%bar%
ab

C:\Documents and Settings\luis>set c=%foo%%bar%

C:\Documents and Settings\luis>echo %c%
ab

C:\Documents and Settings\luis>


"Mete" en u8na variable la concat5enación y entonces compara.

Saludos!


Creo que no me he explicado bien, a ver si ahora me puedes entender.

Tengo lo siguiente:
Código: Seleccionar todo
SET var1=valor1
SET var2=valor2
.........
SET var[n]=valor[n]


Lo que yo tengo es lo siguiente:
Código: Seleccionar todo
SET no=1
SET tp="

:meter

IF var%no%==' GOTO sp
IF %tp%==' SET tp=%var%no%%
IF not %tp%==' SET tp=%tp% %var%no%%

:sp

IF %no%==5 GOTO bye
SET /a no+=1
GOTO meter


Lo que necesito conseguir es unir todos los valores en una variable sin tener que escribir la llamada a cada variable, es decir, que la variable tp contenga los valores de var1, var2 .... var[n] usando el contador.
Cyathogoku
:-D
:-D
 
Mensajes: 142
Registrado: Lun May 15, 2006 3:31 am

Notapor ANELKAOS » Mié Dic 20, 2006 8:35 pm

¿Por qué no utilizas &?
Échame una firmita en: Imagen
Avatar de Usuario
ANELKAOS
:-)
:-)
 
Mensajes: 37
Registrado: Mié Ene 11, 2006 11:46 pm

Notapor Cyathogoku » Mié Dic 20, 2006 9:00 pm

Como uso el ampersand?

No se lo que quieres decir.

Ya he encontrado una solucion que es esta.

Código: Seleccionar todo
FOR /L %a IN (1,1,%n%) DO IF  DEFINED op%a% CALL SET T= %op%a% %t%
SET t=%t:~,-4%


De todos modos si me explicas como se puede hacer usando el ampersand?

Mas que nada para tener mas formas de hacerlo y asi poder ayudar a otra gente.

Saludos
Cyathogoku
:-D
:-D
 
Mensajes: 142
Registrado: Lun May 15, 2006 3:31 am


Volver a Windows

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron