Saltar al contenido

¿Qué significa %~dp0 y cómo funciona?

Hacemos una revisión exhaustiva cada sección de nuestra página web con la meta de enseñarte en todo momento información certera y actual.

Solución:

Vocación

for /?

en la línea de comandos brinda ayuda sobre esta sintaxis (que también se puede usar fuera de FOR, este es el lugar donde se puede encontrar ayuda).

Además, se ha mejorado la sustitución de referencias de variables FOR. Ahora puede usar la siguiente sintaxis opcional:

%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file
%~$PATH:I   - searches the directories listed in the PATH
               environment variable and expands %I to the
               fully qualified name of the first one found.
               If the environment variable name is not
               defined or the file is not found by the
               search, then this modifier expands to the
               empty string

Los modificadores se pueden combinar para obtener resultados compuestos:

%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
%~fsI       - expands %I to a full path name with short names only
%~dp$PATH:I - searches the directories listed in the PATH
               environment variable for %I and expands to the
               drive letter and path of the first one found.
%~ftzaI     - expands %I to a DIR like output line

En los ejemplos anteriores, %I y PATH se pueden reemplazar por otros valores válidos. La sintaxis %~ termina con un nombre de variable FOR válido. Elegir nombres de variables en mayúsculas como %I lo hace más legible y evita confusiones con los modificadores, que no distinguen entre mayúsculas y minúsculas.

Hay diferentes letras que puedes usar como f para “nombre de ruta completo”, d para la letra de unidad, p para la ruta, y se pueden combinar. %~ es el comienzo de cada una de esas secuencias y un número I denota que funciona en el parámetro %I (donde %0 es el nombre completo del archivo por lotes, tal como supuso).

(Primero, me gustaría recomendar este útil sitio de referencia para lotes: http://ss64.com/nt/)

Entonces solo otra explicación útil: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/

La variable %~dp0

los %~dp0 (que es un cero) variable cuando se hace referencia dentro de un archivo por lotes de Windows se expandirá a la Drive letra y pagsath de ese archivo por lotes.

las variables %0-%9 consulte los parámetros de la línea de comandos del archivo por lotes. %1-%9 consulte 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 sigue el carácter de porcentaje (%) con un carácter de tilde (~), puede insertar uno o más modificadores antes del número de parámetro para alterar la forma en que se expande la variable. los d modificador se expande a la letra de la unidad y el p El modificador se expande a la ruta del parámetro.

Ejemplo: Supongamos que tiene un directorio en C: llamado bat_filesy en ese directorio hay un archivo llamado example.bat. En este caso, %~dp0
(combinando el d y p modificadores) se expandirá a C:bat_files.

Consulte este artículo de Microsoft para obtener una explicación completa.

Además, echa un vistazo a este hilo del foro.

Y una referencia más clara desde aquí:

  • %CmdCmdLine% devolverá la línea de comando completa tal como se pasó a CMD.EXE

  • %* devolverá el resto de la línea de comando a partir del primer argumento de la línea de comando (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 una ruta o nombre de archivo válido (sin UNC)

  • %~pn devolverá el directorio de %n si %n es una ruta o nombre de archivo válido (sin UNC)

  • %~nn devolverá el nombre de archivo solo de %n si %n es un nombre de archivo válido

  • %~xn devolverá la extensión de archivo solo de %n si %n es un nombre de archivo válido

  • %~fn devolverá la ruta completa de %n si %n es un nombre de archivo o directorio válido

AÑADIR 1

Acabo de encontrar una buena referencia para el misterioso~ operador de tilde.

los %~ string se llama operador de porcentaje de tilde. Puedes encontrarlo en situaciones como: %~0.

los :~ string se llama operador de dos puntos y tilde. Puedes encontrarlo como %SOME_VAR:~0,-1%.

AÑADIR 2 – 13:12 7/6/2018

%1-%9 consulte la línea de comando args. Si ellos estan no valores de ruta válidos, %~dp1%~dp9 todos se expandirán al mismo valor que %~dp0. pero si ellos están valores de ruta válidos, se expandirán a los suyos valor del controlador/ruta.

Por ejemplo: (lote.bat)

@echo off
@echo ~dp0= %~dp0
@echo ~dp1= %~dp1
@echo ~dp2= %~dp2
@echo on

Ejecutar 1:

D:Workbench>batch arg1 arg2

~dp0= D:Workbench
~dp1= D:Workbench
~dp2= D:Workbench

Ejecutar 2:

D:Workbench>batch c:123a.exe e:abcb.exe

~dp0= D:Workbench
~dp1= c:123
~dp2= e:abc

La variable %0 en un script por lotes se establece en el nombre del archivo por lotes en ejecución.

los ~dp sintaxis especial entre % y el 0 básicamente dice expandir la variable %0 para mostrar la letra de la unidad y la ruta, lo que le brinda el directorio actual que contiene el archivo por lotes.

Ayuda = Enlace

Reseñas y puntuaciones

Recuerda algo, que tienes la opción de añadir un criterio verdadero si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *