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?
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.
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
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.
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