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. losd
modificador se expande a la letra de la unidad y elp
El modificador se expande a la ruta del parámetro.Ejemplo: Supongamos que tiene un directorio en
C:
llamadobat_files
y en ese directorio hay un archivo llamadoexample.bat
. En este caso,%~dp0
(combinando eld
yp
modificadores) se expandirá aC: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.