Escaneia o nome do arquivo e move para as respectivas pastas em um servidor diferente

0
  1. Eu tenho uma pasta (Alunos localizados no servidor A) contendo 800 arquivos, cada um com um identificador único nos 6 primeiros caracteres do nome do arquivo (por exemplo, Y9L-01_xxx.xlsx; Y9L-02_xxx.xlsx; Y9L- 03_xxx.xlsx etc).

  2. Eu tenho pastas com subpastas onde gostaria de transferir os arquivos. Essas pastas estão localizadas no servidor B.

  3. Cada pasta no número 2 acima contém o mesmo identificador exclusivo de 6 caracteres do nome do arquivo no início do nome da pasta (Y9L-01; Y9L-02; Y9L-03). Existe uma subpasta chamada 2014_Hockey sob as pastas Y9L-01; Y9L-02; Y9L-03;

  4. Gostaria de transferir os arquivos da pasta "Alunos" descrita em 1 acima para cada pasta do 2014_Hockey localizada em Y9L-01; T9L-02; Y9L-03 etc descrito em 2 e 3 acima.

Efetivamente, gostaria que o script correspondesse os 6 primeiros caracteres do nome do arquivo aos 6 primeiros caracteres dos nomes das pastas descritos no item 3 e, em seguida, movesse o arquivo para a pasta 2014_Hockey nessa pasta.

Exemplo: O arquivo .xslx em \ Students \ Y9L-01_HockeyChampionship.xslx localizado no servidor A para ir para Y9L-01 \ 2014_Hockey localizado no servidor B

Como faço isso?

Obrigado

Cumprimentos Rauri

    
por Rauriann 08.09.2014 / 16:44

1 resposta

0

Isso deve ser facilmente possível com o PowerShell. Eu ainda não testei isso, então você deve experimentar alguns dados de amostra antes de usá-los em seus arquivos reais.

Get-ChildItem '\ServerA\Students' | ForEach-Object {$NewFolder = $_.Name.Substring(0,6); Move-Item $_ "\ServerB\$NewFolder14_Hockey"}

Você pode ver resultados inesperados se alguns dos arquivos em \ServerA\Students não corresponderem à convenção de nomenclatura especificada por você.

Isto, por exemplo, faz o seguinte:

\ServerA\Students\Y9L-01_HockeyChampionship.xlsx
será movido para \ServerB\Y9L-0114_Hockey\Y9L-01_HockeyChampoinship.xlsx

Se você precisar somente mover os arquivos do Excel, precisará filtrar o restante adicionando Where-Object da seguinte forma:

Get-ChildItem '\ServerA\Students' | Where-Object {$_.Extension -eq '.xlsx'} | ForEach-Object {$NewFolder = $_.Name.Substring(0,6); Move-Item $_ "\ServerB\$NewFolder14_Hockey"}
    
por 08.09.2014 / 17:04