1. У меня есть папка (студенты, расположенные на сервере A), содержащая 800 файлов, каждый из которых имеет уникальный идентификатор в первых 6 символах имени файла (например, Y9L-01_xxx.xlsx; Y9L-02_xxx.xlsx; Y9L-03_xxx.xlsx и т.д.).

  2. У меня есть папки с подпапками, куда я хотел бы перенести файлы. Эти папки расположены на сервере B.

  3. Каждая папка с номером 2 выше содержит один и тот же 6-значный уникальный идентификатор имени файла в начале имени папки (Y9L-01; Y9L-02; Y9L-03). Под папками Y9L-01 есть подпапка 2014_Hockey; Y9L-02; Y9L-03;

  4. Я хотел бы перенести файлы из папки "Студенты", описанной в пункте 1 выше, в каждую папку 2014_Hockey, расположенную под Y9L-01; T9L-02; Y9L-03 и т.д., Описанные в 2 и 3 выше.

По сути, я хотел бы, чтобы скрипт сопоставлял первые 6 символов имени файла с первыми 6 символами имен папок, описанных в # 3, а затем перемещал файл в папку 2014_Hockey в этой папке.

Пример: файл .xslx в каталоге \Students \Y9L-01_HockeyChampionship.xslx, расположенном на сервере A, для перемещения на Y9L-01 \2014_Hockey, расположенный на сервере B

Как мне это сделать?

Спасибо

С уважением Раури

1 ответ1

0

Это должно быть легко выполнимо с PowerShell. Я сам еще не проверял это, поэтому вы должны попробовать его на некоторых образцах данных, прежде чем использовать его в ваших реальных файлах.

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

Вы можете увидеть неожиданные результаты, если некоторые файлы в \\ServerA\Students не соответствуют указанному соглашению об именах.

Это, например, сделает следующее:

\\ServerA\Students\Y9L-01_HockeyChampionship.xlsx
будет перемещен в
\\ServerB\Y9L-01\2014_Hockey\Y9L-01_HockeyChampoinship.xlsx

Если вам нужно только переместить файлы Excel, вам нужно отфильтровать все остальное, добавив Where-Object следующим образом:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .