Нужен скрипт для каждого подкаталога для выполнения команды, если найден соответствующий подкаталог - PullRequest
0 голосов
/ 22 декабря 2018

Я заинтересован в использовании Powershell с robocopy, но я n00b, чтобы разобраться со всем самостоятельно.Если кому-то скучно, непременно воспользуйтесь этим.Если я нарушаю какое-то правило, заранее прошу прощения.

У меня есть несколько подпапок:

C:\AB1234_randomadfasdf
C:\AB1234_otherrandomds
c:\AB1235_randomasdfgfd
C:\AB1236_randomsdfgsdf

Для каждой из этих папок, если найдено соответствие (папка ниже) ТОЛЬКО:

D:\AB1234
D:\AB1235
D:\AB1236

Я хочу выполнить команду robocopy, например

robocopy C:\AB1234_randomadfasdf D:\AB1234\AB1234_randomadfasdf /e /z 
robocopy C:\AB1234_otherrandomds D:\AB1234\AB1234_otherrandomds /e /z 
etc

1 Ответ

0 голосов
/ 22 декабря 2018

Следующий скрипт проверит, присутствует ли в папке назначения какая-либо папка из источника, содержащая подчеркивание
и разделенная там - и вызовет robocopy:

## Q:\Test\2018\12\22\SO_53891986.ps1

$src = 'C:\'
$dst = 'D:\'

Get-ChildItem "$src*_*" -Directory | 
  Where-Object {$_.Name -match '^(.*?)_' -and (Test-Path (Join-Path $dst $Matches[1]))} |
    ForEach-Object {
      &robocopy $_.FullName ("{0}{1}\{2}" -f $dst,$Matches[1],$_.Name) /e /z
    }

Пример дерева после запуска скрипта с тем же $ srcи $ dst

> tree \
├───AB1234
│   ├───AB1234_otherrandomds
│   └───AB1234_randomadfasdf
├───AB1234_otherrandomds
├───AB1234_randomadfasdf
├───AB1235
│   └───AB1235_randomasdfgfd
├───AB1235_randomasdfgfd
├───AB1236
│   └───AB1236_randomsdfgsdf
└───AB1236_randomsdfgsdf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...