(Primero, me gustaría recomendar este útil sitio de referencia para lotes: http://ss64.com/nt/)
Luego otra explicación útil: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
La variable %~dp0
La variable %~dp0
(ese es un cero) cuando se hace referencia dentro de un archivo por lotes de Windows se expandirá a la letra de unidad y camino de ese archivo por lotes.
Las variables %0-%9
se refieren a los parámetros de la línea de comandos del archivo por lotes. %1-%9
se refieren a los argumentos de la línea de comandos después del nombre del archivo por lotes. %0
se refiere al propio archivo por lotes.
Si sigues el carácter de porcentaje (%
) con un carácter de tilde (~
), puedes insertar un modificador(s) antes del número de parámetro para alterar la forma en que se expande la variable. El modificador d
se expande a la letra de unidad y el modificador p
se expande al camino del parámetro.
Ejemplo: Digamos que tienes un directorio en C:
llamado bat_files
, y en ese directorio hay un archivo llamado example.bat
. En este caso, %~dp0
(combinando los modificadores d
y p
) se expandirá a C:\bat_files\
.
Consulta este artículo de Microsoft para una explicación completa.
También, consulta este hilo del foro.
Y una referencia más clara de aquí:
-
%CmdCmdLine%
devolverá toda la línea de comandos tal como se pasó a CMD.EXE
-
%*
devolverá el resto de la línea de comandos a partir del primer argumento de la línea de comandos (en Windows NT 4, %* también incluye todos los espacios iniciales)
-
%~dn
devolverá la letra de unidad de %n (n puede variar de 0 a 9) si %n es un nombre de camino o archivo válido (sin UNC)
-
%~pn
devolverá el directorio de %n si %n es un nombre de camino o archivo válido (sin UNC)
-
%~nn
devolverá solo el nombre de archivo de %n si %n es un nombre de archivo válido
-
%~xn
devolverá solo la extensión de archivo de %n si %n es un nombre de archivo válido
-
%~fn
devolverá el camino completamente cualificado de %n si %n es un nombre de archivo o directorio válido
AGREGAR 1
Acabo de encontrar una buena referencia para el misterioso operador de tilde ~
.
La secuencia %~
se llama operador de tilde porcentaje tilde. Puedes encontrarlo en situaciones como: %~0
.
La secuencia :~
se llama operador de tilde de dos puntos dos puntos tilde. Puedes encontrarlo como %SOME_VAR:~0,-1%
.
AGREGAR 2 - 1:12 PM 7/6/2018
%1-%9
se refieren a los argumentos de la línea de comandos. Si no son valores de camino válidos, %~dp1
- %~dp9
se expandirán todos al mismo valor que %~dp0
. Pero si son valores de camino válidos, se expandirán a su propio valor de unidad/camino.
Por ejemplo: (batch.bat)
@echo off
@echo ~dp0= %~dp0
@echo ~dp1= %~dp1
@echo ~dp2= %~dp2
@echo on
Ejecución 1:
D:\Workbench>batch arg1 arg2
~dp0= D:\Workbench\
~dp1= D:\Workbench\
~dp2= D:\Workbench\
Ejecución 2:
D:\Workbench>batch c:\123\a.exe e:\abc\b.exe
~dp0= D:\Workbench\
~dp1= c:\123\
~dp2= e:\abc\
13 votos
Posible duplicado de ¿Qué significa %~d0 en un archivo por lotes de Windows?
4 votos
Tienes razón, Hellen. Esa pregunta no apareció cuando busqué %~dp0. Tal vez porque tiene %~d0 en su título en lugar de %~dp0.
12 votos
SymbolHound es genial para realizar búsquedas en caracteres que no son alfanuméricos. Por ejemplo, busca
%~dp0
. Por lo general, me doy cuenta de que los resultados principales se refieren a contenido en SO.0 votos
SymbolHound no funcionó para mí con la búsqueda symbolhound.com/?q=%25~dp0. Sin embargo, esto funcionó: google.com/search?q=%25~dp0 - solo digo...
1 votos
SymbolHound 2019: No funciona y uMatrix indica que se conecta a sitios de terceros como blockchain.info y paypalobjects.com.