5

ディレクトリ構造から新しいフォルダにファイルをコピーしようとしています。ファイル構造を保持するつもりはありません。ファイルを取得するだけです。ファイル構造は、ネストされたフォルダーが存在できるようなものですが、「old」という名前のフォルダー内のものは移動したくありません。

私はそれを数回試みましたが、私のパワーシェルの知識は非常に限られています.

現在のファイル構造が存在する場所の例:

Get-ChildItem -Path "C:\Example\*" -include "*.txt -Recurse |% {Copy-Item $_.fullname "C:\Destination\"}

これにより、不要なすべてのファイルを含め、必要なすべてのファイルが得られます。「古い」フォルダーにあるファイルを含めたくありません。注意: 複数の「古い」フォルダがあります。-exclude を試しましたが、ファイル名のみに関連しているように見えます。また、ファイルをコピーしながらパス名を -exclude する方法がわかりません。

何か助けはありますか?

4

2 に答える 2

6

これはどう:

C:\Example*" -include "*.txt -Recurse |
  ?{$_.fullname -notmatch '\\old\\'}|
    % {Copy-Item $_.fullname "C:\Destination\"}

パスのどこかに '\old\' が含まれているものをすべて除外します。

于 2012-02-07T23:52:32.483 に答える
4

私たちがパイプラインに少し忍び込めばwhere-object、あなたが求めているものを手に入れることができると思います. Directory( System.IO.FileInfo) という名前のプロパティNameと、 の値を持つ名前のプロパティを持つ各オブジェクトは、oldに渡されませんCopy-Item

Get-ChildItem -Path "C:\Example*" -include *.txt -Recurse | ? {-not ($_.Directory.Name -eq "old")} |  % {Copy-Item $_.fullname "C:\Destination\"}

(未テスト)

于 2012-02-07T23:51:02.493 に答える