Tengo varios archivos con el mismo esquema de nombres. Como muestra, cuatro archivos se llaman "num_001_001.txt", "num_002_001.txt", "num_002_002.txt", "num_002_003.txt"Windows batch files: variable de configuración en el ciclo
El primer conjunto de números representa de qué "paquete" es, y el segundo conjunto de números simplemente se usa para distinguirlos entre sí. Entonces en este ejemplo tenemos un archivo en el paquete 001 y tres archivos en el paquete 002.
Estoy escribiendo un comando de lote de Windows Vista para tomar todos los archivos y moverlos a sus propios directorios, donde cada directorio representa un paquete diferente Así que quiero mover todos los archivos para el paquete 001 al directorio "001" y todos para 002 al directorio "002"
He escrito con éxito un script que iterará sobre todos los archivos txt y los repetirá. También escribí un script que moverá un archivo a otra ubicación, y también creará el directorio si no existe.
Ahora supongo que tendré que usar subcadenas, así que utilicé la sintaxis% var: ~ start, end% para obtenerlas. Como prueba, he escrito esto para comprobar que realmente puedo extraer la subcadena y crear un directorio condicionalmente
@echo off set temp=num_001_001.txt NOT IF exist %temp:~0,7%\ mkdir %temp:~0,7%
y funciona. Estupendo.
Entonces, agregué el bucle for al mismo.
@echo off FOR /R %%X IN (*.txt) DO ( set temp=%%~nX echo directory %temp:~0,7% )
Pero esta es mi salida:
directory num_002 directory num_002 directory num_002 directory num_002
¿Qué pasa? ¿Vista no admite la reasignación de variables en cada iteración? Los cuatro archivos están en mi directorio, y uno de ellos debe crear num_001. Puse diferentes archivos con 003 004 005 y todo fue el nombre del último paquete. Supongo que algo anda mal con la forma en que estoy configurando las cosas.
Tengo diferentes soluciones para hacer el trabajo, pero estoy confundido por qué un concepto tan simple no funcionaría.
Posible duplicado de [Variables de archivo por lotes inicializadas en un ciclo for] (https://stackoverflow.com/questions/691047/batch-file-variables-initialized-in-a-for-loop) –