Скрипт PowerShell для создания одинаковых папок в нескольких каталогах - PullRequest
0 голосов
/ 09 ноября 2018

Текущая структура папок:

\\Server\Source\A1\A1 101\
\\Server\Source\A1\A1 102\

\\Server\Source\A2\A2 101\
\\Server\Source\A2\A2 102\

\\Server\Source\A3\A3 101\
\\Server\Source\A3\A3 102\

Мне нужно иметь возможность создавать 3 папки, A, B и C, внутри каждой из папок второго уровня под источником (A1 101, A2 101 и т. Д.). FolderDir.txt имеет A, B, C в своей строке. Есть ли лучший способ, кроме следующего? Существует намного больше подкаталогов, чем указано выше:

Foreach($folder in Get-Content "C:\temp\folderDir.txt")
{
    New-Item "\\Server\Source\A1\A1 101\$folder" -ItemType directory
    New-Item "\\Server\Source\A1\A1 102\$folder" -ItemType directory
    New-Item "\\Server\Source\A2\A2 101\$folder" -ItemType directory
    New-Item "\\Server\Source\A2\A2 102\$folder" -ItemType directory
    New-Item "\\Server\Source\A3\A3 101\$folder" -ItemType directory
    New-Item "\\Server\Source\A3\A3 102\$folder" -ItemType directory
}

Спасибо! Я все еще довольно новичок в PowerShell.

Вот что я придумал:

Foreach($folder in Get-Content "C:\temp\folderDir.txt")
{
$lesson = Get-ChildItem -Path \\Server\Source\A*\*
New-Item $lesson\$folder -ItemType Directory
}

Но я получаю ошибку:

New-Item : Could not find a part of the path 'A'.
At line:4 char:1
+ New-Item $lesson\$folder -ItemType Directory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (\\Server\Source...\A:String) [New-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : CreateDirectoryIOError,Microsoft.PowerShell.Commands.NewItemCommand

New-Item : Could not find a part of the path 'B'.
At line:4 char:1
+ New-Item $lesson\$folder -ItemType Directory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (\\Server\Source...\B:String) [New-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : CreateDirectoryIOError,Microsoft.PowerShell.Commands.NewItemCommand

New-Item : Could not find a part of the path 'C'.
At line:4 char:1
+ New-Item $lesson\$folder -ItemType Directory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (\\Server\Source...\C:String) [New-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : CreateDirectoryIOError,Microsoft.PowerShell.Commands.NewItemCommand

Однако, если я поставлю в конце команду -WhatIf (после «директории»), она сможет делать то, что я хочу ...

1 Ответ

0 голосов
/ 09 ноября 2018

Поскольку список папок повторяется несколько раз, он должен быть прочитан в первую очередь

непроверенный:

$folderlist = Get-Content "C:\temp\folderDir.txt"
Get-ChildItem -Path '\\Server\Source\*\*' -Directory | ForEach-Object {
  ForEach ($folder in $folderlist){
    New-Item (Join-Path $_.FullName $folder) -ItemType directory -Force -WhatIf
  }
}

Если вывод выглядит нормально, удалите -WhatIf

...