Script por lotes: mueva archivos a las carpetas correspondientes con nombres similares

Script por lotes: mueva archivos a las carpetas correspondientes con nombres similares

Estoy intentando establecer una consulta sin papel y almacenar todos los datos de los pacientes electrónicamente. Ya he creado 8000 carpetas (1 - 8000) y ahora necesito mover aproximadamente 16000 archivos .pdf a las carpetas correspondientes, por ejemplo, "202 Medical Aid Card", "202 Dr Referral", "202 Sick Note" deben moverse a carpeta "202". Todos los archivos se almacenan en una carpeta.

Gracias de antemano.

Respuesta1

Si tu situación esesosimple, entonces deberías continuar emitiendo comandos del sistema operativo similares al siguiente:

MOVE 202* 202\

Etcétera.

Respuesta2

Ampliando la otra respuesta actual a esta pregunta:

  1. Abra un nuevo documento de texto en un editor de texto plano (por ejemplo, el Bloc de notas de Windows) y copie las siguientes instrucciones por lotes:

    FOR /L %%G IN (1,1,8000) DO (
        MOVE ".\%%G *" ".\%%G\"
        )
    
  2. Guarde este archivo como ex. sort_files.bat.

  3. Coloque este .batarchivo en la misma carpeta que los archivos que desea ordenar.

  4. Ejecútelo sort_files.bathaciendo doble clic en él o ejecutándolo desde la línea de comando.

Advertencias

  • .\%%G *asume el formato de nombre de archivo ej. 202 Medical Aid Card. Si pierde el espacio (es decir .\%%G*), sus archivos NO se ordenarán correctamente y terminará con unenormedolor de cabeza (¡así que no hagas esto! =P).

  • .\%%G\asume que sus carpetas existentes están en el mismo directorio que sus archivos. Si no es así, reemplácelo .con la ruta real al directorio de su carpeta (por ejemplo C:\path\to\folder\directory\%%G\).

  • En la expresión (1,1,8000), el último valor (p. ej. 8000) determina cuántos bucles se procesan en total. Es posible que desee considerar reducirlo (1,1,8000)a un número manejable (por ejemplo, (1,1,10)) inicialmente para probar su archivo por lotes (y verificar los resultados) antes de comprometerse con (1,1,8000).


Notas

  • %%Ges la variable por lotes utilizada para contar el ciclo. Se reemplaza con un número a medida que se procesa el bucle. Entonces MOVE ".\%%G *" ".\%%G\"se convierte en ex. MOVE ".\1 *" ".\1\".

  • En el comando MOVE ".\%%G *" ".\%%G\":

    • Técnicamente, las comillas sólo son necesarias si la ruta contiene espacios (por ejemplo ".\%%G *"), pero se utilizan tanto en la ruta de origen ( .\%%G *) como en la de destino ( .\%%G\) para mantener la coherencia.

    • .es una forma abreviada de decir "el directorio actual".

    • *es un comodín. Entonces ej. .\%%G *se traduce como "cualquier archivo en el directorio actual que comience con %%G(por ejemplo 1), seguido de un espacio y cualquier otro carácter ( *)".


Referencias

información relacionada