2017-10-24 33 views
1

コピーするとエラーの原因となるアイテムを除外して、あるディレクトリから別のディレクトリに再帰的にコピーします。Powershellはコピーしないときにアイテムを除外します

変数 "$ Excluir"に "System Volume ..."と "RECYCLE.BIN"という値しかないのに、ドットで始まるすべての項目を除外する必要があるときはうまくいきました。 " $ Excluirバリアブルに新しい値を追加するループを書きました。

"-Exclude"パラメータは、新しい値を除外することを忘れてしまいました。この場合、これらの値はドットで始まるファイルとディレクトリの名前です。

私の英語が混乱を引き起こす場合は、申し訳ありません。

これは私のコードです:

$RutaOrigenFicheros = "E:\" 
$RutaTempFicheros = "A:\ENTRADA\TMP\" 

$Excluir = @("System Volume Information","`$RECYCLE.BIN") 

$ElementosOcultosUnix = Get-ChildItem $RutaOrigenFicheros -Name -Recurse -Include ".*" 

foreach ($i in $ElementosOcultosUnix){ 
    if ($i -match "\\") 
    { 
    $elemento = $i -split "\\" 
    $n = ($elemento.length) - 1 
    $Excluir += $elemento[$n] 
    } 
    else 
    { 
    $Excluir += $i 
    } 
} 

Write-Host $Excluir 

Copy-Item -Path $RutaOrigenFicheros* -Destination $RutaTempFicheros -Recurse -Force -Exclude $Excluir -ErrorAction Stop 
+0

あなただけがファイルをコピーしていますか、またはディレクトリが含まれていますか? – TheIncorrigible1

+0

その再帰的なので、両方とも – tributoo2

+0

私は意図をもっと求めていました。したがって、ピリオドで始まるもの以外のすべてのファイル/フォルダ、または例の2つの名前付きファイル(システムボリューム情報と$ RECYCLE.BIN? – TheIncorrigible1

答えて

0

あなたの論理は非常に明確ではありません(または意味がありません)。

$Destination='A:\Temp\' 

$Exclude = Get-ChildItem -Path 'E:\' -Recurse -Force | 
    Where-Object { $_.FullName -like '*System Volume Information*' -or 
       $_.FullName -like '*$RECYCLE.BIN*' -or 
       $_.FullName -like '*\.*' } 

Write-Host $Exclude.FullName 

Copy-Item -Path 'E:\*' -Destination $Destination -Recurse -Force -Exclude $Exclude.FullName -ErrorAction 'Stop' 
+0

私の論理が明確でないことはどういう意味ですか?私はかなりpowershellプログラミングの新人ですが、私はかなり理解できる私のコードを参照してください。とにかく助けてくれてありがとう。 – tributoo2

+0

私はあなたのコードとdoesnt作業をテストしましたが、除外しません。たぶん私は自分自身を間違って説明しました。私は、NTFSファイルシステムによって作成されたシステムボリューム情報とRECYCLE.BINディレクトリを除外する必要があります。そして、 "可能な"ファイルまたはディレクトリで始まるものを除外する必要があります。 – tributoo2

+0

たとえば、ループの後のMy $ Excluir変数の最終値は、配列としてこれらの値を持ちます。システムボリューム情報、$ RECYCLE.BIN、.file1.txt、.file2.txt、.dir1 – tributoo2

関連する問題