Obtener el directorio actual de batchfile


En primer lugar, vi este tema pero no pude entenderlo.

Pregunta :

Hay un archivo por lotes en D:\path\to\file.bat con el siguiente contenido:

echo %cd%
pause

La salida es:

C:\

Debe ser D:\path\to

¿Qué estoy haciendo mal?

Author: Community, 2013-06-12

3 answers

La variable de solo lectura del sistema %CD% mantiene la ruta del llamador del lote, no la ubicación del archivo por lotes.

Puede obtener el nombre del script por lotes tal y como fue escrito por el usuario con %0 (por ejemplo, scripts\mybatch.bat). Se pueden aplicar extensiones de parámetro para que %~dp0 devuelva la Unidad y la ruta al script por lotes (por ejemplo, W:\scripts\) y %~f0 devuelva la ruta completa (por ejemplo, W:\scripts\mybatch.cmd).

Puede hacer referencia a otros archivos en la misma carpeta que el script por lotes usando esto sintaxis:

CALL %0\..\SecondBatch.cmd

Esto incluso se puede usar en una subrutina, Echo %0 dará la etiqueta de llamada pero, echo "%~nx0" le dará el nombre de archivo del script por lotes.

Cuando la variable %0 se expande, el resultado se encuentra entre comillas.

Más sobre parámetros de lote .

 402
Author: Stoleg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-16 18:18:49

Muy simple:

setlocal
cd /d %~dp0
File.exe
 92
Author: shay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-05 23:44:27

Dentro de su .archivo bat:

set mypath=%cd%

Ahora puede usar la variable %mypath% para hacer referencia a la ruta del archivo al archivo .bat. Para verificar que la ruta es correcta:

@echo %mypath%

Por ejemplo, un archivo llamado DIR.bat con el siguiente contenido

set mypath=%cd%
@echo %mypath%
Pause

Ejecutar desde el directorio g:\test\bat hará eco de esa ruta en la ventana de comandos del DOS.

 16
Author: rockerron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-12 08:01:04