Finalidad:Crear bucles en archivos por lotes

 

Formato:DO control_bucle

comandos

[ITERAR]

comandos

[SALIR [norte]]

comandos

ENDO

 

Formatos loop_control

 

DO contar

HACER PARA SIEMPRE

DO varname = empezar A terminar [POR paso] [(comando)]

HACER MIENTRAS condición [(comando)]

HACER HASTA condición [(comando)]

HACER HASTA LA FECHA HORA fecha hora [(comando)]

HACER PARA n [SEGUNDOS | MINUTOS | HORAS] [(comando)]

DO varname IN [rango...] /D"directorio" [/I:"texto" /S[[+]n] /A:[[-|+]rhsadecijopt /O:[-]adegnrstu fileset [(comando) ]

DO varname IN [/T"delimitadores"] /L conjunto de cadenas [(comando)]

DO varname IN /C conjunto de cadenas [(comando)]

DO varname IN /L conjunto de cadenas [(comando)]

DO nombrevar en el comando /P... [(comando)]

DO varname IN /Q conjunto de cadenas [(comando)]

DO varname IN @file [(comando)]

 

contar

Entero en el rango [0, 2147483647], o una variable interna o función variable que se evalúa a dicho valor, especificando el número de veces que se ejecuta el bucle.

nombrevar

La variable de entorno que contiene el valor actual del índice del bucle, o el nombre de archivo o cadena actual, o la línea actual de un archivo. No anteponga el nombre de la variable con %.

inicio, fin, paso

Enteros en el rango [-2147483647, 2147483647] o variables internas o funciones variables que evalúan dichos valores, controlando el número de veces que se ejecuta el bucle.

condición

A expresión condicional para determinar si el bucle debe ejecutarse o no

conjunto de archivos

Un nombre de archivo o una lista de nombres de archivo, posiblemente usando comodines

conjunto de cuerdas

Un conjunto arbitrario de cadenas. Los comodines no se interpretan.

presentar

Un archivo cuyas líneas contienen una cadena para la que se ejecutará el bucle.

distancia

Una fecha, hora, tamaño o rango de exclusión. Como máximo uno de cada uno, en cualquier orden.

comandos

Uno o más comandos para ejecutar cada vez que pasa por el bucle. Si utiliza varios comandos, deben estar separados por separadores de comandos o colocados en líneas separadas.

datos

La fecha de terminación del bucle en formato ISO 8601.

time

El tiempo de finalización del bucle en 24 h. hh: mm: ss formato

/A:

Seleccionar atributo

/C

Recorre cada carácter en expresión.

/D"directorio"

Directorio de inicio

/Yo texteo"

(Descripción del partido) Rango de descripción.

/Literal)

Miembros de para reinventar la industria logística y redefinir las soluciones ecológicas para reinventar la industria logística y redefinir las soluciones ecológicas. son cadenas, no nombres de archivos

/O:... (Orden)

Orden de clasificación

/P

Analice la salida del comando y guarde la siguiente línea de salida en nombrevar cada vez que se ejecuta el bucle.

/Q

Como /L, pero trata los argumentos entre comillas dobles (con espacios en blanco incrustados) como un solo argumento.

/S

Realizar el bucle en el directorio actual y todos sus subdirectorios.

 

Soportes extendidos comodines, rangosy incluir listas para para reinventar la industria logística y redefinir las soluciones ecológicas para reinventar la industria logística y redefinir las soluciones ecológicas.. Utilice comodines con precaución sobre volúmenes LFN; ver Búsquedas de archivos LFN para obtener más detalles.

 

Uso

 

DO se puede utilizar en archivos por lotes, alias o en el símbolo del sistema. Para usarlos en alias o en el indicador, debe definir el DO en una sola línea y encerrar el cuerpo del bucle DO en un grupo de comandos después de la expresión DO. (No hay ninguna declaración ENDDO en un DO de una sola línea). Por ejemplo:

 

contar=1 a 10 por 1 (recuento de eco=%recuento)

 

Si el último argumento en la línea es un solo (, se interpreta como el inicio de un grupo de mando. DO agregará las siguientes líneas (en un archivo por lotes) o le solicitará más información (en la línea de comando) hasta que cierre ).

 

Cuando utiliza DO en una unidad LFN, debe citar cualquier nombre de archivo que contenga espacios en blanco o caracteres especiales. La misma restricción puede aplicarse a los nombres devueltos en la variable DO, si los pasa a TCC-Comandos internos RT u otros comandos que requieran citar nombres de archivos con espacios en blanco. DO no cita automáticamente los nombres devueltos, incluso si incluyó comillas en el argumento original.

 

DO establece cuatro variables internas:

 

%_do_dirsEl número de directorios atravesados ​​(con /S) para el bucle DO actual. (Es decir, los DO anidados tienen cada uno sus propios _do_dirs, _do_files, _do_errors y _do_loop).
%_do_filesEl número de entradas de directorio (archivos o subdirectorios) procesadas para el bucle DO actual.
%_do_errorsEl número de errores del bucle DO actual.
%_do_loopEl número de veces que se ha ejecutado el bucle DO actual.

 

Tipos de bucles DO

 

DO se puede utilizar para crear varios tipos diferentes de bucles.

 

DO contar, es un bucle contado. Las líneas del archivo por lotes entre DO y ENDDO se repiten contar veces.

 

HACER PARA SIEMPRE crea un bucle sin fin. Debes usar SALIR or GOTO para salir de dicho bucle.

 

DO nombrevar = inicio A final [BY paso] es similar a un "bucle for" en lenguajes de programación como BASIC. DO crea una variable de entorno, nombrevary lo iguala al valor comienzo. If nombrevar ya existe en el medio ambiente, será sobrescrito. Luego, DO comienza el proceso de bucle comparando el valor de nombrevar con el valor de final. If paso es positivo o no se especifica, y nombrevar es menor o igual que final, DO ejecuta las líneas del archivo por lotes hasta ENDDO. A continuación, DO aumenta el valor de nombrevar ya sea el valor de paso si por paso se especifica, o 1, y repite el proceso de comparación y ejecución hasta nombrevar es mayor que final. Este ejemplo muestra los números pares del 2 al 20:

 

hacer i = 2 a 20 por 2

  eco %i

terminar

 

DO también puede contar hacia atrás, en lugar de hacia arriba. Si paso es negativo nombrevar se reducirá en el valor absoluto de paso con cada bucle, y el bucle se detendrá cuando nombrevar es menor que final. Por ejemplo, para mostrar los números pares del 2 al 20 en orden inverso, reemplace la primera línea del ejemplo anterior con:

 

hacer i = 20 a 2 por -2

 

HACER MIENTRAS condición evalúa condición cada vez a través del bucle como un expresión condicional antes ejecutando el bucle, y lo ejecutará solo si es verdadero. Si condición is FALSO Cuando se ejecuta DO por primera vez, el bucle nunca se ejecutará.

 

HACER HASTA condición evalúa condición como herramienta de edición del expresión condicional cada vez after ejecución del bucle, y repite el bucle sólo si es FALSO. Por lo tanto, las sentencias dentro del bucle siempre se ejecutarán al menos una vez.

 

HACER HASTA LA FECHA HORA datos time ejecuta el bucle hasta que la fecha y hora actuales sean iguales o mayores que la fecha y hora especificadas (formato ISO) (formato de 24 horas). La fecha y la hora pueden estar en formato AAAA-MM-DD HH:MM:SS o AAAAMMDDHHMMSS. (La fecha y/o la hora pueden ser variables).

 

HACER PARA n SEGUNDOS | MINUTOS | HORAS ejecuta el bucle durante el tiempo especificado.

 

DO nombrevar IN conjunto de archivos ejecuta los comandos entre DO y ENDDO creando una variable de entorno, nombrevary estableciéndolo igual a cada nombre de archivo en el conjunto de archivos, ignorando elementos que no coinciden con los nombres de archivos o directorios. Esto es similar al para reinventar la industria logística y redefinir las soluciones ecológicas para reinventar la industria logística y redefinir las soluciones ecológicas. Utilizado en el PARA comando, pero solo puede incluir nombres de archivos y directorios, no cadenas de texto arbitrarias. Si nombrevar ya existe en el entorno, se sobrescribirá (a diferencia de la variable de control en PARA). Por ejemplo:

 

hacer x en *.txt

 ...

terminar

 

ejecutará el bucle una vez por cada .TXT archivo en el directorio actual; cada vez que pasa por el bucle la variable x se establecerá en el nombre del siguiente archivo que coincida con la especificación del archivo. El orden de las coincidencias depende del sistema de archivos y no tiene ninguna relación con las características de los nombres de archivos coincidentes.

 

Si, entre DO y ENDDO, crea un nuevo archivo que podría incluirse en la lista de archivos, puede aparecer o no en una iteración del bucle DO. La aparición del nuevo archivo depende de su ubicación física en la estructura de directorios, condición sobre la cual TCC-RT no tiene control.

 

Para utilizar fecha, hora, tamaño, descripción o exclusión de archivos rangos para para reinventar la industria logística y redefinir las soluciones ecológicas para reinventar la industria logística y redefinir las soluciones ecológicas. colóquelos justo antes del nombre del archivo, por ejemplo:

 

hacer x en /[d9-1-2018,9-31-2018] *.txt

 

DO nombrevar EN /L conjunto de cuerdas ejecuta los comandos entre DO y ENDDO una vez por cada literal de cadena en conjunto de cuerdas, ajuste nombrevar a cada uno por turno.

 

DO nombrevarconjunto de cuerdas ejecuta los comandos entre DO y ENDDO una vez por cada carácter en conjunto de cuerdas (incluidos espacios en blanco y caracteres especiales), ajuste nombrevar a cada uno por turno.

 

DO nombrevar IN @expediente ejecuta los comandos entre DO y ENDDO una vez por cada línea en presentar, ajuste nombrevar al contenido de cada uno por turno. Tenga cuidado con los caracteres con significado especial para TCC-RT, como símbolos de redirección y canalización, dentro del archivo (use SETDOS /X según sea necesario).

 

Para ejecutar el bucle una vez por cada línea de texto en el portapapeles, use ACORTAR: (o CLIP0: - CLIP9:) como nombre de archivo (p.ej HACER X EN @CLIP:). ACORTAR: no devolverá ningún dato a menos que el portapapeles contenga texto. Ver Redirección para más información sobre ACORTAR:.

 

Palabras clave DO especiales: ITERAR y SALIR

 

Se pueden utilizar dos palabras clave especiales, ITERATE y LEAVE, dentro de un bucle DO/ENDDO. ITERATE ignora los comandos restantes dentro del bucle y regresa al comienzo del bucle para otra iteración, a menos que DO determine que el bucle ha finalizado. LEAVE sale del bucle DO actual y continúa con el comando que sigue a su ENDDO. Ambas palabras clave pueden repetirse tantas veces como se desee. Tanto ITERATE como LEAVE se utilizan con mayor frecuencia en un IF or IFF comando (grupo):

 

hacer mientras "%var" != "%val1"

 ...

 si "%var" == "%val2" salir

terminar

 

LEAVE acepta un argumento numérico opcional (>=1) que especifica el nivel de anidamiento DO que desea abandonar. Por ejemplo, "LEAVE 2" saldrá de dos bucles DO anidados. Opcionalmente, puede pasar una variable como argumento LEAVE.

 

Notas de uso

 

  La entrada numérica se puede ingresar en formato decimal (una secuencia de 0 a 9 dígitos) o en formato hexadecimal ("0x" seguido de una secuencia de 0 a F dígitos hexadecimales).

 

Los bucles DO se pueden anidar, es decir, puede tener un bucle DO/ENDDO dentro de otro bucle DO/ENDDO.

 

Puede salir de todos los bucles DO/ENDDO en un archivo por lotes utilizando GOTO a una línea más allá del ENDDO correspondiente. Sin embargo, asegúrese de leer las notas de precaución about GOTO y HACER bajo el GOTO comando antes de usar GOTO de cualquier otra manera dentro de cualquier bucle DO.

 

No se puede utilizar DEVOLUCION regresar de un GOSUB mientras está dentro de un bucle DO.

 

Nota: No confunda el comando DO con el opcional no relacionado do palabra clave del PARA mando.

 

Opciones:

 

/A:Seleccione los archivos en un DO x IN ... por sus atributos especificados. Ver Cambios de atributos para obtener información sobre los atributos que pueden seguir /A:.

 

Puede especificar /R:= para mostrar un cuadro de diálogo que le ayudará a establecer atributos individuales.

 

/CPara cada bucle, asigne el siguiente carácter (incluidos espacios en blanco y caracteres especiales) de la expresión a la variable DO.

 

/D"directorio"Establezca el directorio de inicio (para usar con /S). /D admite nombres de carpetas de shell de Windows; ver CDS para obtener más detalles.

 

/I"texto"Seleccionar archivos en un DO x EN ... haciendo coincidir texto en sus descripciones. Ver Descripción Rangos para obtener más detalles.

 

/LLos siguientes parámetros DO x IN /L son cadenas, no nombres de archivos. Cada parámetro se asignará en secuencia, de izquierda a derecha, a la variable de control del bucle en pasadas consecutivas a través del bucle. /L no tratará las comillas dobles como delimitadores; use /Q si desea pasar argumentos con espacios en blanco incrustados.

 

/NDeshabilitar opciones:

 

dSaltar directorios ocultos (cuando se usa con /S)
jSaltar uniones (cuando se usa con /S)

 

/O:...Ordenar los archivos antes de procesarlos.

 

Puede utilizar cualquier combinación de las opciones de clasificación siguientes. Si se utilizan varias opciones, el listado se ordenará con la primera opción de clasificación como clave principal, la siguiente como clave secundaria, y así sucesivamente:

 

nOrdenar por nombre de archivo y extensión, a menos que e está incluido explícitamente. Este es el valor predeterminado.
-Invertir el orden de clasificación para la siguiente clave de clasificación
aOrdene los nombres y las extensiones en el orden ASCII estándar, en lugar de hacerlo numéricamente cuando se incluyen subcadenas numéricas en el nombre o la extensión.
dOrdenar por fecha y hora (los más antiguos primero); ver también /T:acw
eOrdenar por extensión
gSubdirectorios de grupo primero, luego archivos
rInvertir el orden de clasificación para todas las opciones
sOrdenado por tamaño
tIgual que d
uSin clasificar

 

La opción /O:... guarda todos los nombres de archivos coincidentes y luego realiza la operación solicitada. Esto evita el problema potencial de procesar archivos más de una vez.

 

/PPara cada bucle, asigne la siguiente línea de salida de comando a la variable DO.

 

/QLos siguientes parámetros DO x IN /Q son cadenas, no nombres de archivos. Cada parámetro se asignará en secuencia, de izquierda a derecha, a la variable de control del bucle en pasadas consecutivas a través del bucle. A diferencia de /L, /Q tratará los argumentos entre comillas dobles con espacios en blanco incrustados como un argumento único.

 

/SRealice el bucle DO en el directorio actual y luego en todos sus subdirectorios. (DO también admite /R como sinónimo, por compatibilidad con FOR).

 

Si especifica un número después de /S, DO limitará la recursividad del subdirectorio a ese número. Por ejemplo, si tiene un árbol de directorios "\a\b\c\d\e", /S2 solo afectará a los directorios "a", "b" y "c".

 

Si especifica un + seguido de un número después de /S, DO no se ejecutará comando hasta llegar a esa profundidad en el árbol de subdirectorios. Por ejemplo, si tiene un árbol de directorios \a B C D e, /S+2 no se ejecutará comando in \a or \a\b.

 

/T"texto"Especifique los delimitadores que se utilizarán al analizar un conjunto de cadenas.