Una manera de hacerlo es crear una lista de los archivos de moverse en un temporal archivo. A continuación, utilice el archivo con el comando for
. Genere la lista usando findstr
.
> dir/b/a-d | findstr /v aaa* > "%temp%\@movelist"
> for /f %f in (%temp%\@movelist) do move %f ...
El primer comando obtiene una lista de todos los archivos (sin directorios) en el directorio actual y luego las tuberías de la lista a findstr
que excluye (/v
) los nombres de archivo que coincidan con el patrón y la coloca en el archivo @movelist
en el directorio temporal. El segundo comando sólo toma los resultados por lo que puede hacer lo que quiera con ellos (moverlo).
Probablemente haya una mejor manera de hacerlo en un solo comando sin el archivo temporal, simplemente no sé cómo escribirlo. No estoy seguro de cómo llamar el comando dir
desde dentro el comando for
. AFAIK solo toma los archivos de programa que existen, no los comandos integrados.
gran solución! gracias – eze1981
Sin embargo, es una copia de archivo, no un movimiento. Con archivos grandes, una copia puede ser extremadamente lenta, mientras que un movimiento en el mismo volumen es casi instantáneo. – Adisak
Nota: También encontré útil la opción '/ S' (mostrar el contenido del directorio de forma recursiva). – Antonio