Script em lote: mova arquivos para pastas correspondentes com nomes semelhantes

Script em lote: mova arquivos para pastas correspondentes com nomes semelhantes

Estou tentando estabelecer uma prática sem papel e armazenar todos os dados dos pacientes eletronicamente. Já criei 8.000 pastas (1 - 8.000) e agora preciso mover aproximadamente 16.000 arquivos .pdf para as pastas correspondentes, por exemplo, "Cartão de Auxílio Médico 202", "Referência Médica 202", "Atestado de Doença 202" precisa ser movido para pasta "202". Todos os arquivos são armazenados em uma pasta.

Agradeço antecipadamente.

Responder1

Se a sua situação forquesimples, então você deve continuar emitindo comandos do sistema operacional semelhantes ao seguinte:

MOVE 202* 202\

E assim por diante.

Responder2

Expandindo a outra resposta atual a esta pergunta:

  1. Abra um novo documento de texto em um editor de texto simples (por exemplo, o Bloco de Notas do Windows) e copie as seguintes instruções em lote:

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

  3. Coloque este .batarquivo na mesma pasta dos arquivos que você deseja classificar.

  4. Execute sort_files.batclicando duas vezes nele ou executando-o na linha de comando.

Ressalvas

  • .\%%G *assume o formato do nome do arquivo ex. 202 Medical Aid Card. Se você perder o espaço (ou seja, .\%%G*), seus arquivos NÃO serão classificados corretamente e você acabará com umenormedor de cabeça (então não faça isso! =P).

  • .\%%G\assume que suas pastas existentes estão no mesmo diretório que seus arquivos. Se não estiverem, substitua .pelo caminho real para o diretório da sua pasta (por exemplo, C:\path\to\folder\directory\%%G\).

  • Na expressão (1,1,8000), o último valor (por exemplo, 8000) determina quantos loops são processados ​​no total. Você pode considerar reduzir inicialmente (1,1,8000)para um número gerenciável (por exemplo, (1,1,10)) para testar seu arquivo em lote (e verificar quaisquer resultados) antes de confirmar (1,1,8000).


Notas

  • %%Gé a variável de lote usada para contar no loop. Ele é substituído por um número à medida que o loop é processado. Então MOVE ".\%%G *" ".\%%G\"se torna ex. MOVE ".\1 *" ".\1\".

  • No comando MOVE ".\%%G *" ".\%%G\":

    • As aspas são tecnicamente necessárias apenas se o caminho contiver espaços (por exemplo, ".\%%G *"), mas forem usadas tanto no caminho de origem ( .\%%G *) quanto no caminho de destino ( .\%%G\) para consistência.

    • .é uma forma abreviada de dizer "o diretório atual".

    • *é um curinga. Então ex. .\%%G *traduz-se como "qualquer arquivo no diretório atual começando com %%G(por exemplo 1) seguido por um espaço e quaisquer outros caracteres ( *)".


Referências

informação relacionada