Как скопировать только определенные папки, но сохранить структуру родительских папок без изменений? - PullRequest
0 голосов
/ 24 января 2012

У меня есть структура папок:

Powershell-build
    Comp1
        Build
        Impl
    Comp2
        Build
        Impl

Моя выходная папка должна содержать только содержимое папки Build, как показано ниже.На самом деле я хочу сохранить структуру родительских папок, но следует скопировать только определенное содержимое папки.

Power-outputbuild
    Comp1
        Build
    Comp2
        Build

Как этого добиться?

Ответы [ 2 ]

1 голос
/ 24 января 2012

Не тестировалось:

$source = 'C:\Powershell-build\'
 $target = 'C:\Power-outputbuild\'
 $keep = '\\Build$'

 Get-ChildItem $source |
     where {$_.psiscontainer} |
     select -expand fullname |
     where {$_ -match $keep} |
     foreach {
         $new_dir = $_ -replace [regex]::escape($source),$target
         mkdir $new_dir
         copy-item $_*.* -destination $new_dir
         }    
1 голос
/ 24 января 2012

Вот пример того, как сделать это на Perl с использованием модуля File::Copy::Recursive:

use File::Copy::Recursive qw/dircopy/;

my $parentdir      = 'Powershell';              # dirname
my $parentdir_copy = $parentdir.'_outputbuild'; # output dirname suffix
opendir(my $dir_handle, $parentdir) 
    or die("Can't open dir: $!");
my @dirs = grep { ! /^\.{1,2}$/ } # ignore parent '..' and current '.' dirs
      readdir($dir_handle) or die("Can't read dir: $!");
for my $dirname (@dirs) {
  my $builddir = $dirname."/Build"; # "Build" directory
  if (-d $parentdir."/".$builddir) {
    dircopy($parentdir."/".$builddir, $parentdir_copy."/".$builddir);
  }
}
closedir($dir_handle);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...