jueves, 19 de mayo de 2011

Batch: Cargar en una variable la ruta actual o la ruta de ejecución


Aquí tenenemos dos formas de localizar desde un archivo batch la ruta


%CD% 
Esta variable contiene la ruta actual.

%~dp0
Esta variable contiene la ruta del archivo batch.



Ejemplo 1
En este ejemplo se puede apreciar el funcionamiento de ambas formas de localizar la ruta. La diferencia es que %CD% es la ruta actual, por lo que si cambia dentro del batch esta cambia, mientras que %~dp0 es la ruta del batch y no cambia en ningún momento.


@echo off
echo %CD%
e:
echo %CD%
echo %~dp0
Pause




Ejemplo 2

Este batch de DOS, mediante la variable %CD% localiza la ruta actual y la carga en otra variable que podrá ser utilizada más adelante por el programa.

set MIRUTA=%CD%
echo %MIRUTA% 
pause

Este es un pequeño truco que permite al batch saber desde donde se está ejecutando en cualquier momento y es el primer paso para hacer batch que interactuen adecuadamente con otros archivos, independientemente de su ubicación.

De esta forma podemos, por ejemplo llamarlo simplemente con un doble clic desde cualquier ubicación y que funcione, sin tener que acceder a el mediante linea de comandos. O también nos permitirá cargar en una variable la ruta actual de trabajo del mismo.


4 comentarios:

  1. Gracias! Me ha servido para mi propósito!!!

    ResponderEliminar
  2. Sería posible que colocara el caso en el que %CD% cambia dentro del Batch y cómo %~dp0 no lo hace

    ResponderEliminar
  3. Gracias!!!. por casualidad puedes ayudarme con el siguiente problema.

    start "%~dp0data\mysql\bin\mysql.exe" --defaults-file="%~dp0data\mysql\bin\my.ini"

    intento ejecutarlo y recibo el mensaje
    "Windows no puede encontrar el archivo" --defaults-file=D:\AMP\data\mysql\bin\my.ini"
    pero la direccion es correcta, como puedo solucionarlo.
    uso en los dos casos %~dp0

    ResponderEliminar