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.
Gracias! Me ha servido para mi propósito!!!
ResponderEliminarExcelente!!! muchas gracias!!
ResponderEliminarSería posible que colocara el caso en el que %CD% cambia dentro del Batch y cómo %~dp0 no lo hace
ResponderEliminarGracias!!!. por casualidad puedes ayudarme con el siguiente problema.
ResponderEliminarstart "%~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