Имеется папка, например D:\xyz со множеством подпапок разного уровня вложения.
Необходим код, создающий папку, напр. D:\tmp_xyz со всей структурой подпапок как в D:\xyz
Раньше с PS ела не имел. Прошу помочь
PowerShell - ищу PS код для копирования структуры каталогов
-
DJ Mogarych
Re: PowerShell - ищу PS код для копирования структуры каталогов
Код:
Код: Выделить всё
$from = "D:\xyz"
$to = "D:\tmp_xyz"
robocopy $from $to /e /create
dir $to -Recurse -Force |? mode -notmatch '^d' |del -Force-
Sham
Re: PowerShell - ищу PS код для копирования структуры каталогов
Код:
Код: Выделить всё
(gci 'D:\xyz' -dir -rec).fullname.replace('D:\xyz', 'D:\tmp_xyz') | % { ni -Path $_ -item Directory }-
DJ Mogarych
Re: PowerShell - ищу PS код для копирования структуры каталогов
Sham, отличная идея, а вы проверяли работоспособность?
У меня валит кучу ошибок
Код:
С foreach работает:
Код:
У меня валит кучу ошибок
Код:
Код: Выделить всё
New-Item : Не удается привязать объект ввода, так как он не содержит сведения, необходимые для привязки всех обязательных параметров: Pa
th
строка:1 знак:91
+ ... e.Replace('D:\xyz', 'D:\tmp_xyz') | New-Item -ItemType Directory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (D:\firmware\to\...t\logging\ru-ru:String) [New-Item], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectMissingMandatory,Microsoft.PowerShell.Commands.NewItemCommandС foreach работает:
Код:
Код: Выделить всё
(gci 'D:\xyz' -Recurse |? psiscontainer).FullName.Replace('D:\xyz', 'D:\tmp_xyz') |% {$null = New-Item $_ -ItemType Directory -ErrorAction SilentlyContinue}-
YuS_2
Re: PowerShell - ищу PS код для копирования структуры каталогов
Код:
PS
На другом форуме, где гражданин тоже оставил просьбу в поиске кода, подсказали более простой вариант:
Код:
Код: Выделить всё
$source = ".\Folder1\"
$destination = ".\Folder2"
$src = gi -lit $source.trimend('\') -force
dir -lit $src.fullname -rec -force -dir |%{
$d = $_.fullname.replace($src.fullname,$destination)
if (!(test-path -lit $d)){$null = md $d -force}
}PS
На другом форуме, где гражданин тоже оставил просьбу в поиске кода, подсказали более простой вариант:
Код:
Код: Выделить всё
$source = ".\Folder1"
$destination = ".\Folder2"
copy $source $destination -filter {PSIsContainer} -force -rec-
ruslaw