RE:copiar archivos según tamaño
Hola Alejo. Te explico por encima. Si alguien se quiere currar un tutorial "entendible", que lo diga.
El comando FOR rastrea dentro de un archivo o una ubicación y almacena en variables la información contenida en cada línea, para ejecutar un comando recursivamente por cada línea. Creo que no me he explicado muy bien, pero es lo que tiene hacer un tutorial "en directo".
Con TOKENS se refiere al número de variables que va a almacenar, y DELIMS es el delimitador que va a utilizarse para separar esas variables. Me explico mejor con unos ejemplos:
Ejemplo 1
Tenemos un archivo (prueba.txt) que contiene lo siguiente:
datoA1 datoB1 datoC1 archivo1.txt
datoA2 datoB2 datoC2 archivo2.txt
Queremos almacenar las 4 columnas de información y mostrarlas en pantalla, pero en otro orden. Bien, pues en TOKENS habría que decirle que queremos almacenar los 4 datos (TOKENS=4), y en DELIMS que el delimitador es el espacio (DELIMS= )
Si queremos poner la línea así: archivo1.txt datoB1 datoC1 datoA1 habría que escribir:
FOR /F "TOKENS=4 DELIMS= " %%a in (prueba.txt) DO (ECHO %%d %%b %%c %%a)
Resultado:
archivo1.txt datoB1 datoC1 datoA1
EJEMPLO 2
Tenemos un archivo (prueba.txt) que contiene lo siguiente:
datoA1_datoB1_datoC1_archivo1.txt
datoA2_datoB2_datoC2_archivo2.txt
queremos almacenar la primera columna y la última en variables y mostrarlas en pantalla. En este caso, TOKENS=1,4 (la primera y la cuarta)
Ahora el delimitador no sería el espacio, sino guión bajo, por lo tanto DELIMS=_
Habría que escribir:
FOR /F "TOKENS=1,4 DELIMS=_" %%a in (prueba.txt) DO (ECHO %%a %%b)
Resultado:
datoA1 archivo1.txt
EJEMPLO3
Con el archivo prueba.txt:
primeralínea
segundalínea
datoA1_datoB1_datoC1_archivo1.txt
datoA2_datoB2_datoC2_archivo2.txt
queremos almacenar el nombre del archivo en una variable y cambiarlo de extensión.
En este caso, los delimitadores de palabras serían dos: el guión bajo y el punto que separa el nombre de la extensión. Además, tendríamos que "saltarnos las dos primeras líneas, ya que no contienen información que nos pueda interesar. Para esto último utilizamos SKIP. como son las 2 primeras líneas las que nos queremos saltar, pues habría que poner SKIP=2
Habría que escribir:
FOR /F "SKIP=2 TOKENS=4,5 DELIMS=._" %%a in (prueba.txt) DO (rename %%a.%%b %%a.bak)
Resultado:
rename archivo1.txt archivo1.bak
rename archivo2.txt archivo2.bak
Creo que con esto ya puedes empezar a hacer pruebas. El que quiera, puede hacer correcciones o ampliar la información. Yo lo iré recopilando, ya que una vez leído todo, se entiende bastante bien... No obstante, no dudéis en preguntar cualquier aclaración.
salu2