windows - poner - Obtener el directorio de archivos por lotes actual
como poner etiquetas a archivos (3)
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?
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 los siguientes contenidos
set mypath=%cd%
@echo %mypath%
Pause
ejecutar desde el directorio g:/test/bat
hará eco de esa ruta en la ventana de comandos de DOS.
La variable de solo lectura %CD%
mantiene la ruta de la persona que llama al lote, no la ubicación del archivo por lotes.
Puede obtener el nombre de la secuencia de comandos por lotes como lo escribió el usuario con %0
(por ejemplo, scripts/mybatch.bat
). Las extensiones de parámetros se pueden aplicar a esto, por lo que %~dp0
devolverá la Unidad y la Ruta al script por lotes (por ejemplo, W:/scripts/
) y %~f0
devolverá la ruta completa (por ejemplo, W:/scripts/mybatch.cmd
).
Puede referirse a otros archivos en la misma carpeta que el script por lotes usando esta sintaxis:
CALL %0/../SecondBatch.cmd
Incluso se puede usar en una subrutina, Echo %0
le 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 incluye entre comillas.
Muy simple:
setlocal
cd /d %~dp0
File.exe