Digitalize o nome do arquivo e vá 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 exclusivo 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). Há uma subpasta chamada 2014_Hockey nas pastas Y9L-01; Y9L-02; Y9L-03;

  4. Gostaria de transferir os arquivos da pasta "Alunos" descrita em 1 acima para cada uma das pastas 2014_Hockey localizadas em Y9L-01; T9L-02; Y9L-03 etc descritos em 2 e 3 acima.

Efetivamente, eu gostaria que o script correspondesse aos 6 primeiros caracteres do nome do arquivo com os 6 primeiros dos nomes de pastas descritos em # 3 e depois mova o arquivo para a pasta 2014_Hockey nessa pasta.

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

Como eu faço isso?

obrigado

Atenciosamente Rauri

Rauriann
fonte

Respostas:

0

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

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

Você poderá ver resultados inesperados se alguns dos arquivos \\ServerA\Students não corresponderem à convenção de nomenclatura especificada.

Isso fará, por exemplo, o seguinte:

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

Se você precisar mover apenas os arquivos do Excel, será necessário filtrar o restante adicionando o Where-Objectseguinte:

Get-ChildItem '\\ServerA\Students' | Where-Object {$_.Extension -eq '.xlsx'} | ForEach-Object {$NewFolder = $_.Name.Substring(0,6); Move-Item $_ "\\ServerB\$NewFolder\2014_Hockey"}
Iszi
fonte