1

私は、FolderA と FolderB の 2 つのフォルダーを比較し、A には存在するが B には存在しないファイルに注目するというタスクを与えられました。

完全に説明できなくてすみません。私たちの状況を説明してくれると助かるかもしれません。会社の営業社員が競合他社に行くために会社を辞めました。彼は、仕事用のラップトップのローカル ハード ドライブにファイルを持っています。彼のコンピューターには存在するが、共有ネットワーク フォルダーには存在しないファイルがあるかどうかを確認しようとしています。

彼のラップトップには存在するが共有ネットワークの場所には存在しないファイルのリストを (パスとともに) 作成する必要があります。ラップトップのローカル ハード ドライブと共有ネットワークの場所の間のファイル構造が異なります。これについて最善の方法は何ですか?

$folderAcontent = "C:\temp\test1" 
$folderBcontent = "C:\temp\test2"

$FolderAContents = Get-ChildItem $folderAcontent -Recurse | where-object {!$_.PSIsContainer}
$FolderBContents = Get-ChildItem $folderBcontent -Recurse | where-object {!$_.PSIsContainer}

$FolderList = Compare-Object -ReferenceObject ($FolderAContents ) -DifferenceObject ($FolderBContents) -Property name
$FolderList | fl * 
4

3 に答える 3

5

compare-Object コマンドレットを使用します。

Compare-Object (gci $folderAcontent) (gci $folderBcontent)

$folderAcontent のみにあるファイルを一覧表示する場合は、 <= SideIndicator で結果を選択します。

Compare-Object (gci $folderAcontent) (gci $folderBcontent) | where {$_.SideIndicator -eq "<="}
于 2013-01-08T19:14:48.540 に答える
2

両方のディレクトリのファイル名が同じであると仮定すると、次のようなことができます:-

$folderAcontent = "C:\temp\test1"  
$folderBcontent = "C:\temp\test2"

ForEach($File in Get-ChildItem -Recurse -LiteralPath $FolderA | where {$_.psIsContainer -eq $false} | Select-Object Name)
{
   if(!(Test-Path "$folderBcontent\$File"))
{
   write-host "Missing File: $folderBcontent\$File"
}
}

上記は、フォルダー A に存在するファイル (サブディレクトリではない) に対してのみ機能します

于 2013-01-08T18:26:51.017 に答える
1

試す:

#Set locations
$laptopfolder = "c:\test1"
$serverfolder = "c:\test2"

#Get contents
$laptopcontents = Get-ChildItem $laptopfolder -Recurse | where {!$_.PSIsContainer}
$servercontents = Get-ChildItem $serverfolder -Recurse | where {!$_.PSIsContainer}

#Compare on name and length and find changed files on laptop
$diff = Compare-Object $laptopcontents $servercontents -Property name, length -PassThru | where {$_.sideindicator -eq "<="}

#Output differences
$diff | Select-Object FullName

lastwritetimecompare-object コマンドレットで長さの後に追加すると、変更日も比較されます (ファイルが更新されたがサイズが同じ場合)。新しいか古いかではなく、異なる日付のみを検索することに注意してください。:)

于 2013-01-08T18:56:18.437 に答える