私は2つのフォルダを持っています
- C:\フォルダ1
- C:\フォルダ2
両方のフォルダーには、異なる番号のファイル名 (例: 01.txt、02.txt...10.txt) の *.txt ファイルが含まれます。
スクリプトは、両方のフォルダーに存在するファイルを比較します。次に、「Folder2」またはその逆に存在しない「Folder1」からのファイルのみを C:\TestFolder にコピーします。
たとえば、次の場合:
- Folder1 には 10.txt という単一のファイルが含まれています
- Folder2には複数のファイル02.txt、10.txtが含まれています
その場合、02.txt が C:\Testfolder にコピーされる唯一のファイルになります。
以下のスクリプトを変更して、次の機能を追加します。
- Folder1 に存在するファイルの方が新しい場合、Folder2 の「すべて」のファイル: 何もしません。
- Folder1 のファイルの方が新しい場合、Folder2 のファイルの「一部」: 新しいファイルを Folder3 にコピーします。
基本的に、Folder1 に存在するファイルが Folder2 に既に存在するかどうかを確認する必要があります。また、このファイルが同じかどうか、または新しいバージョンのファイルが Folder2 に存在するかどうかも確認してください。
Compare-Object $Folder1 $Folder2 -Property Name, Length , LastWriteTime | Where-Object {$_.SideIndicator -eq "<="} | ForEach-Object {
Copy-Item "C:\Source\$($_.name)" -Destination "C:\TestFolder" -Force -recurse -include "*.txt"
}