25

Powershell v 2.0 を使用しています。ファイルとディレクトリをある場所から別の場所にコピーします。string[] を使用してファイルの種類を除外しています。また、コピーされないようにディレクトリを除外する必要もあります。ファイルは正しくフィルタリングされていますが、フィルタリングしようとしているディレクトリはobjコピーされ続けています。

$exclude = @('*.cs', '*.csproj', '*.pdb', 'obj')
    $items = Get-ChildItem $parentPath -Recurse -Exclude $exclude
    foreach($item in $items)
    {
        $target = Join-Path $destinationPath $item.FullName.Substring($parentPath.length)
        if( -not( $item.PSIsContainer -and (Test-Path($target))))
        {
            Copy-Item -Path $item.FullName -Destination $target
        }
    }

私はそれをフィルタリングするためにさまざまな方法を試しましたが、何\obj も機能してい*obj* ない\obj\ ようです。

ご協力ありがとうございます。

4

3 に答える 3

57

-Excludeパラメータはかなり壊れています。使用したくないディレクトリをフィルタリングすることをお勧めしますWhere-Object (?{})。例えば:

$exclude = @('*.cs', '*.csproj', '*.pdb')
$items = Get-ChildItem $parentPath -Recurse -Exclude $exclude | ?{ $_.fullname -notmatch "\\obj\\?" }

PS: 警告の言葉 –それ自体で使用-Excludeすることさえ考えないでください.Copy-Item

于 2013-11-07T17:53:58.547 に答える
7

これを使用して、ルートの下のファイルをリストしますが、ディレクトリは含めません

$files = gci 'C:\' -Recurse  | Where-Object{!($_.PSIsContainer)}
于 2014-09-05T14:02:09.223 に答える