SoloCodigo

Programación Específica => Programación de Archivos del Sistema => Mensaje iniciado por: antony_soluciones en Martes 16 de Agosto de 2005, 18:22

Título: Variables De Entorno
Publicado por: antony_soluciones en Martes 16 de Agosto de 2005, 18:22
Hola a todos....

Mi pregunta es la siguiente, como hacer en un .bat que una variable tome la ruta donde este fue ejecutado... lo que he hecho es lo siguiente pero no me sirve por que nesecito la ruta con los nombres de directorios y todo, ya les muestro

set BAT_HOME=.\

eso es lo que he hecho pero cuando quiero ver el valor de la variable hago lo siguiente:

echo off
echo %BAT_HOME%
.\

lo que esta en azul es lo que sale, lo que yo quisiera que saliese es lo siguiente:

por ejemplo si estoy en la ruta c:\directorio1\dir2\dir2\ y en esta ruta se encuetra el .bat que inicia la variable de entorno BAT_HOME cuando yo haga el:

echo off
echo %BAT_HOME%

aparesca como respuesta la ruta c:\directorio1\dir2\dir2\ y no .\....

Espero haber sido claro, si algo no se entiende por favor posteenlo y yo intentare explicar mejor mi inquietud...

Cordialmente,

Antony Hernan Delgado Solano
Título: Re: Variables De Entorno
Publicado por: Hao en Martes 16 de Agosto de 2005, 21:04
:think:
No c si hao entendio bien... pero = creo que es con el comando "path" solo asi... este te muestra la ruta o direccion del archivo....

Y si no te sirve hao se disculpa y vera la forma de ayudarte...

Atte

HAO :lightsabre:
Título: Re: Variables De Entorno
Publicado por: antony_soluciones en Miércoles 17 de Agosto de 2005, 01:35
La verdad es que no me sirve de mucho usar el comando path por que este es una variable de entorno del sistema usado para colocar en el entorno del sistema operativo las rutas de aquellos ejecutables que deseemos usar en cualquier momento sin tener que ejecutarlos desde la ruta en donde se encuentra... por ejemplo en el directorio bin del jdk de java se encuentran todos los .exe o .bin que sirven para compilar, ejecutar o hacer otro monton de cosas y cada uno de estos ejecutables deben estar disponibles en cualquier ruta...

De todas maneras muchas gracias... y si encuentra como colaborarme le agradeceria el doble....
Título: Re: Variables De Entorno
Publicado por: Zirrosis en Viernes 18 de Agosto de 2006, 22:09
Prueba esto:

Código: Text
  1. echo %0
  2.  

Salu2
Título: Re: Variables De Entorno
Publicado por: antony_soluciones en Viernes 18 de Agosto de 2006, 22:28
:huh:  :o mmmmmmm.....


Eso no sirve de mucho amigo, no es una respuesta que coloques algo que no has probado.... echo %0   jejejeje.... espero que alla sido una broma :D  :D
Título: Re: Variables De Entorno
Publicado por: nausea en Miércoles 23 de Agosto de 2006, 13:11
No hace falta que te crees ninguna variable, ya la tienes. Copia y ejecuta esto

Código: Text
  1. echo %CD%
  2.  

Si necesitas esa variable para algo haz

Código: Text
  1. set miVariable = %CD%
  2.  

Saludos
n.
Título: Re: Variables De Entorno
Publicado por: Zirrosis en Sábado 26 de Agosto de 2006, 12:35
el %0 te da la ruta desde donde se ejekuta el .bat....si estas en C:\archivo.bat...%0 pasara a valer C:\archivo.bat....
Título: Re: Variables De Entorno
Publicado por: nausea en Lunes 28 de Agosto de 2006, 08:07
Pues eso no pasa en mi sistema,
Código: Text
  1. echo %0
  2.  
da como resultado el nombre del fichero bat que se ejecuta
Título: Re: Variables De Entorno
Publicado por: Zirrosis en Martes 29 de Agosto de 2006, 00:33
Ke SO tienes??? yo, en un XP, pongo esto en un archivo .bat:

Código: Text
  1. @echo off
  2. echo %0
  3. pause > nul
  4. end
  5.  

Guardo este .bat en la ruta C:\ruta\archivo.bat, l oejecuto y me muestra esto:

Citar
C:\ruta\archivo.bat

A ti no??? a ti solo te sale archivo.bat???
Título: Re: Variables De Entorno
Publicado por: nausea en Martes 29 de Agosto de 2006, 07:27
copiado y pegado
Código: Text
  1. @echo off
  2. echo %0
  3. pause > nul
  4. end
  5.  
y lo que me da es ...

Código: Text
  1. archivo.bat
  2.  

sin el path.

Tengo un Microsoft Windows XP [Versión 5.1.2600]

por cierto. el comando
Código: Text
  1. end
  2.  
da error. Si pido un help en la línea de comandos, END no existe
Título: Re: Variables De Entorno
Publicado por: Zirrosis en Martes 29 de Agosto de 2006, 14:50
Tienes razon, no existe el End, me lie kon los lenguajes, aunke yo lo uso en los .bat's, como da error, finaliza el programa.

Ke version del CMD tienes???puesto ke a mi me da el path.

Salu2
Título: Re: Variables De Entorno
Publicado por: nausea en Miércoles 30 de Agosto de 2006, 07:45
La versión de mi sistema operativo, como he mencionado en mi post anterior es
Código: Text
  1. Microsoft Windows XP [Versión 5.1.2600]
  2.  
.

De todas formas, en esta página de Microsoft (http://support.microsoft.com/?kbid=318689) ya advierten de que el parámetro %0 (Que, por cierto, no es una variable porque las variables tienen la forma %v%) no se comporta de la misma forma en todos los sistemas operativos.

Por esos creo que el uso de %CD% (que si es una variable) es más seguro.

Saludos
n.
Título: Re: Variables De Entorno
Publicado por: Zirrosis en Jueves 31 de Agosto de 2006, 16:29
Ok....eso de ke %0 no es una varaible lo pongo en duda...ya ke una varaible es una "etiketa" por asi decirlo ke varia su contenido. Justo al contrario ke una Constante.... ;)  ;)  (no ahce falta expliakr ke es todo esto). Bien, pues, ya ke al poner %0 da la ruta, y como la ruta es varaibles, pues yo lo konsidero komo una variable.... ;)  ;)

Aunke eso si, siempre y kuando %0 se ejecute desde un .bat, desde la Shell %00 vale %0, no vale el nombre de la ruta.... ;)  ;)
Título: Re: Variables De Entorno
Publicado por: nausea en Viernes 1 de Septiembre de 2006, 07:55
Pero que %0 no sea una varible no quiere decir que sea una constante. Porque %0 es un parámetro. ¿más explicaciones?

Pues más. Cuando se ejecuta un .bat puede hacerse con parámetros o si ellos. Por ejemplo:

Código: Text
  1. unaPrueba.bat param1 param2 param3
  2.  

Los parámetros se recogen dentro de un .bat mediante las "etiketas" %1, %2, etc. Ejemplo

Código: Text
  1. copy %1 %2
  2.  

En este caso param1 puede ser un nombre de fichero y param2 un directorio. Pero también puede hacerse asignación. Otro ejemplo

Código: Text
  1. set %miVariable% = %3
  2.  

oooohhh. ¿Que es esto? Pues si quieres una variable, tendrás que definir un nombre entre 2 signos %, no sólo con uno porque si solamente tiene un signo % es una referencia a un parámetro. Si %1 fuera una variable, el siguiente ejemplo funcionaría
Código: Text
  1. set %1 = 34
  2.  
pero, de hecho, da error.

¿Y que pasa con %0? Pues que el parámetro %0 siempre se pasa, aunque no se escriba ningún parámetro detras de la llamada al .bat. ¿Y cuanto vale ese parámetro? El nombre del .bat con o sin path según sea como hayas hecho la llamada al .bat. Es decir, si al . bat se le llama
Código: Text
  1. miBat
  2.  
la respuesta será
Código: Text
  1. miBat
  2.  
Si la llamada la haces
Código: Text
  1. d:\undirectorio\otrodirectorio\masdirectorios\miBat.bat
  2.  
el valor de %0 es
Código: Text
  1. d:\undirectorio\otrodirectorio\masdirectorios\miBat.bat
  2.  

Por esa misma razón, tu pretendida solución no le sirve a antony_soluciones, porque el pide el camino, sin el nombre del .bat y tu solución, en el mejor de los casos le da todo el nombre completo, el del .bat incluido.

La variable,  :huh: , %CD% es la solución que pide antony_soluciones. Que es una variable del sistema que cambia cuando cambias de directorio (Por eso no es una constante) y tampoco es un parámetro, porque no se pasa al .bat

¿Y sabes como se que esto es así? Porque me he abierto una ventana de línea de comandos y he hecho unas pruebas y me he leido algunos manuales. Por tus respuestas se ve que no lo has hecho.

saludos
n.
Título: Re: Variables De Entorno
Publicado por: Zirrosis en Sábado 2 de Septiembre de 2006, 18:31
Lo de los aprametros si lo sabia.... ;)  ;)  ;)  lo ke no me expliko es porke a ti solo te sale el nombre del .bat y a mi me sale la ruta+nombre.

De manuales me e leido muchisimos.... ;)  ;)
Título: Re: Variables De Entorno
Publicado por: nausea en Lunes 4 de Septiembre de 2006, 07:52
¿como ejecutas el .bat?

Una posible explicación la doy en mi post anterior cuando pongo dos ejemplos de %0 ¿la has probado? Seguro que no.

Y que quieres que te diga. A mi me parece que lo de los parámetros no lo sabías
Título: Re: Variables De Entorno
Publicado por: Zirrosis en Lunes 4 de Septiembre de 2006, 10:53
xD xD xD xD lo de los parametros lo sabia hace tiempo.

Haber si alguien nos puede decir ke le sale al poner echo %0 en un .bat
Título: Re: Variables De Entorno
Publicado por: nausea en Miércoles 6 de Septiembre de 2006, 08:06
Mira, tu no lees y ni te enteras.

El 26 de agosto tu, Zirrosis, escribes
Citar
el %0 te da la ruta desde donde se ejekuta el .bat....si estas en C:\archivo.bat...%0 pasara a valer C:\archivo.bat....

Confundes el path con el nombre completo del fichero. Ni tienes ni idea y ni has leido cual era la pregunta de anthony_soluciones. El quiere el path, no el nombre completo. No hace falta que nadie diga que le da
Código: Text
  1. echo %0
  2.  
Si hubieras leido mi "post" del 1 de septiembre lo sabrias: te da la llamada a tu .bat.

Si has hecho la llamada
Código: Text
  1. c:\undir\archivo.bat
  2.  
el resultado será
Código: Text
  1. c:\undir\archivo.bat
  2.  
pero no
Código: Text
  1. c:\undir\
  2.  
Si cambias de directorio y hace
Código: Text
  1. archivo.bat
  2.  
%0 te dará
Código: Text
  1. archivo.bat
  2.  
Si haces
Código: Text
  1. .\archivo.bat
  2.  
te dará
Código: Text
  1. .\archivo.bat
  2.  
.

Y antes de decir nada, lo pruebas :blink:
Título: Re: Variables De Entorno
Publicado por: Zirrosis en Miércoles 6 de Septiembre de 2006, 14:30
pones el %0 en un archivo de texto y kno el for buscas la ruta y lo pones dentro de una variable.....asi se saka el path a parte de kon la varaible de entorno.....asi ke no digas ke kon %0 no se puede..... :angry:  :angry:
Título: Re: Variables De Entorno
Publicado por: antony_soluciones en Jueves 7 de Septiembre de 2006, 02:07
Hola amigos...

Jejejejeje.... :D  :D  no creí que esto habría salido para tanto; amigos muchas gracias, de verdad muchas gracias, ustedes son ese tipo de gente que a uno le gusta leer, me divertí mucho con sus conjeturas y discuciones, lo cierto es que lo único que nesecitaba era el simple %CD% y ya, ahora si se pueden crear buenos ejecutores con un .bat...

Cuidence y otra vez gracias...

Cordialmente

Antony, un amigo más :hola:
Título: Re: Variables De Entorno
Publicado por: su - en Jueves 7 de Septiembre de 2006, 02:20
Cita de: "Zirrosis"
xD xD xD xD lo de los parametros lo sabia hace tiempo.

Haber si alguien nos puede decir ke le sale al poner echo %0 en un .bat
bash  :P
Código: Text
  1. bash-2.05b$ echo"Salida: $0"
  2.  
Salida: bash
Código: Text
  1. bash-2.0.5b$ echo "echo $0" > test.sh && bash test.sh
  2.  
bash
Ni modo je je.
Code, code...
Código: Text
  1. #!/usr/bin/env sh
  2. echo $0;
  3.  
  4.  
bash
 :argh:
Código: Text
  1. bash-2.05b$ perl -e 'print "$0\n";'
  2.  
-e
Código: Text
  1. #!/usr/bin/env perl
  2. print "$0\n";
  3.  
test.pl  :D
Título: Re: Variables De Entorno
Publicado por: nausea en Jueves 7 de Septiembre de 2006, 07:38
Cita de: "Zirrosis"
pones el %0 en un archivo de texto y kno el for buscas la ruta y lo pones dentro de una variable.....asi se saka el path a parte de kon la varaible de entorno.....asi ke no digas ke kon %0 no se puede..... :angry:  :angry:
Si claro, eso es mucho mejor que %CD%  :blink:
Título: Re: Variables De Entorno
Publicado por: Zirrosis en Jueves 7 de Septiembre de 2006, 14:45
xD xD nops, pero es otro modo.... ;)  ;)

Agur!!