La pieza% ~ dp0 ya se mencionó, pero en realidad hay más: los caracteres después de ~ definen la información que se extrae.
Ningún resultado de la letra en el retorno del nombre del archivo de parche
d - devuelve la letra de unidad
p - devuelve la ruta
s - devuelve la ruta corta
x - devuelve la extensión del archivo
Entonces, si ejecuta el script test.bat a continuación desde c: \ Temp \ nombre de directorio largo \ carpeta,
@echo off
echo %0
echo %~d0
echo %~p0
echo %~dp0
echo %~x0
echo %~s0
echo %~sp0
obtienes el siguiente resultado
test
c:
\Temp\long dir name\
c:\Temp\long dir name\
.bat
c:\Temp\LONGDI~1\test.bat
\Temp\LONGDI~1\
Y si se pasa un parámetro a su script como en la
prueba c: \ temp \ mysrc \ test.cpp,
se pueden hacer las mismas manipulaciones con la variable% 1.
¡Pero el resultado de la expansión de% 0 depende de la ubicación!
En el "nivel superior" del lote, se expande al nombre de archivo del lote actual.
En una función (llamada), se expande al nombre de la función.
@echo off
echo %0
call :test
goto :eof
:test
echo %0
echo %~0
echo %~n0
La salida es (el archivo por lotes se inicia con myBatch.bat)
myBatch.bat
:test
:test
myBatch