Red de conocimiento informático - Aprendizaje de código fuente - Explicación detallada de los parámetros de procesamiento por lotes

Explicación detallada de los parámetros de procesamiento por lotes

Variables en el comando FOR

Hay algunas variables en el comando FOR. ¡Muchos amigos novatos no entienden su uso! ¡Hoy les explicaré su uso!

Primero enumere todas las variables de FOR:

~I: elimine las comillas (") y expanda %I

%~fI: expanda %I a un formato totalmente calificado nombre de ruta

%~dI - Expande %I solo a una letra de unidad

%~pI - Expande %I solo a una ruta

% ~nI - Expande %I solo a un nombre de archivo

%~xI - Expande %I solo a una extensión de archivo

%~sI - Expande rutas que contienen solo nombres cortos

%~aI - Expande %I a los atributos del archivo

%~tI - Expande %I a la fecha/hora del archivo

% ~zI - expande %I al tamaño de el archivo

%~$PATH:I - busca el directorio listado en la variable de entorno PATH y expande %I

al primer directorio encontrado. Un nombre completo si el entorno. El nombre de la variable

no está definido, o el archivo no se encuentra, esta combinación de teclas se expande a la

cadena vacía

Podemos ver que cada línea tiene un letra mayúscula "I". Esta I es en realidad la variable que trajimos en FOR. ¿Cuál es el nombre de la variable que sustituimos en la declaración FOR? Simplemente escríbalo aquí.

Por ejemplo:FOR /F % %z IN ('set') DO @echo %%z

El nombre de la variable que sustituimos aquí es z, luego tenemos que cambiar la I por la z, por ejemplo, cambiar %~fI por %~ fz

En cuanto al contenido anterior de %~p, ¡es la sintaxis!

Comencemos con la explicación:

~I - Elimina las comillas ( " ), expandir %I

La función de esta variable es la descrita, ¡elimine las comillas!

Veamos este ejemplo:

Primero Creamos un archivo de texto llamado temp.txt, ingresamos estos contenidos en él

"1111

2222"

"3333"

44 "44

Luego crea un archivo BAT con el siguiente código:

FOR /F "delims=" %%i IN (temp.txt) DO @echo %%~ i

pausa

Después de la ejecución, vemos el eco de CMD de la siguiente manera:

1111

2222"

3333

44"44

Comparándolo con el contenido anterior en temp.txt, encontraremos que las comillas en la primera y tercera línea han desaparecido. Esto es para eliminar las comillas ~i ¡Funciona!

Las reglas para eliminar comillas son las siguientes (¡hermano BAT agregó!)

1. la cadena, elimine las comillas al principio y al final;

2. Si no hay comillas al final de la cadena, elimine las comillas al principio de la cadena

;

3. Si hay comillas en el medio de la cadena, o solo al final, no se eliminarán.

%~fI - expande %I a un nombre de ruta completo

Ver ejemplo:

Guarda el código en cualquier lugar, aquí estoy. Simplemente colócalo en el escritorio.

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~fi

pausa

Después de la ejecución, se muestra el siguiente contenido

C:\Documents and Settings\Administrator\Desktop\test.bat

C:\Documents and Settings\Administrator\Desktop\test.vbs

Cuando cambio %%~fi en el código directamente a %%i

FOR /F "delims==" %%i IN ('dir /b') DO @ echo %%i

pausa

Estos contenidos se mostrarán después de la ejecución

test.bat

test.vbs

En comparación, podemos ver fácilmente que no hay ruta. Esta es la función de "expandir %I a un nombre de ruta completo"

Es decir, si el contenido de la variable %i. es Si se proporciona un nombre de archivo, imprimirá la ruta absoluta del archivo, en lugar de simplemente

imprimir un nombre de archivo. ¡Lo sabrá experimentando usted mismo!

%~dI - solo extiende %I a una letra de unidad

Mira el ejemplo:

El código es el siguiente, ¡todavía lo puse en el escritorio para ejecutarlo!

p>

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~di

pausa

Después de la ejecución, el Lo siguiente se muestra en mi CMD

C:

C:

Hay dos archivos en mi escritorio, test.bat, test.vbs y %%. ~di La función es que si el contenido de la variable %%i es un nombre de archivo o directorio, imprimirá el símbolo de la unidad donde se encuentra el archivo o directorio.

%~pI - solo expandir. %I a una ruta

Este uso es el mismo que el anterior, solo imprime la ruta pero no el nombre del archivo

FOR /F "delims==" %%i IN ( 'dir /b') DO @echo %%~ pi

pausa

No escribiré los resultados. Puedes copiar el código y ver los resultados tú mismo. Todos se utilizan de esta manera. Los códigos se proporcionan y usted mismo puede ver los resultados.

%~nI - Expanda %I a un nombre de archivo únicamente

¡Imprima solo el! nombre de archivo

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ni

pausa

%~xI - expandir solo %I a una extensión de archivo

Imprimir solo la extensión del archivo

FOR /F "delims==" %%i IN ('dir /b ') DO @echo %%~xi

pausa

%~sI: las rutas expandidas contienen solo nombres cortos

Imprime nombres de archivos cortos absolutos

FOR /F "delims==" %%i IN ('dir / b') DO @echo %%~si

pausa

%~aI - expandir % I a los atributos del archivo

Imprimir los atributos del archivo

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ai

pausa

>%~tI - Expande %I a la fecha/hora del archivo

Imprime la fecha en que se creó el archivo

FOR /F "delims==" %%i IN ( 'dir / b') DO @echo %%~ti

pausa

%~zI - expandir %I al tamaño del archivo

Imprimir el tamaño del archivo

p>

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~zi

pausa

%~$PATH :I: busca los directorios enumerados en la variable de entorno PATH y expande %I

al primer nombre completo encontrado. Si el nombre de la variable de entorno

no está definido o no se encuentra el archivo, esta combinación de teclas se expandirá a

la cadena vacía

Esta es la última uno, y los anteriores. Son diferentes, ¡déjame hablar de ellos por separado!

Primero creamos un archivo temp.txt en el escritorio y escribimos estos contenidos en él

c:\ windows

c:\windows\system32

c:\windows\teett

Luego guarde estos códigos como procesamiento por lotes y colóquelos en el escritorio.

p>

FOR / F "delims==" %%i IN (temp.txt) DO @echo %%~$PATH:i

pausa

Después de la ejecución, CMD muestra el siguiente contenido

c:\WINDOWS

c:\WINDOWS\system32

ECHO está activado.

¿Por qué sucede esto? También hay una línea de c:\windows\teett?

Cuando ingresamos directamente echo %path% en CMD, se mostrará C:\WINDOWS\ system32;C :\WINDOWS;C:\WINDOWS\System32\Wbem

%%~$PATH:i significa encontrar contenido que coincida con el valor de esta variable PATH en el texto. igual que la variable PATH, luego imprímala

Si no son iguales, ¡se mostrará una línea en blanco!

Solo se puede aplicar a la variable PATH, no a otras Si desea comparar muchos valores, puede intentar asignar el valor a las variables PATH. ¡No las he probado!

¡Bien, eso es todo para la introducción de las variables FOR!