毎日、多くのクライアントからzipファイルが届きます。ファイル名は次の要素で構成されますフォルダ内のファイル名が見つからないことを検出します。
「データ」は常に同じテキストであるdata_clientname_timestamp.zip
、「CLIENTNAMEは」何と「タイムスタンプ」可能性があり、ファイルの作成日です。
ファイルは常に同じディレクトリにあります。クライアント名は常に事前にわかっているので、どのファイルを受け取るべきか分かります。
次の手順を実行しなければならないスクリプト:に「不足しているクライアントからファイルを..」すべてのファイルが受信
- リスト1つまたは複数のクライアントからのファイルが欠落している場合、書き込み(作成)今日
- ファイル
- クライアントを変数にリストしたいので、簡単に変更できます。私がこれまで持って何
:
$folder='C:\data'
Get-ChildItem $folder -recurse -include @("*.zip") |
Where-Object {($_.CreationTime -gt (Get-Date).Date)} | select name | out-file $folder\result.txt
しかし、どのようにファイルを欠落しているファイルを確認するには?
編集: TESTDATA:
$Timestamp = (Get-Date).tostring(“yyyyMMddhhmmss”)
New-Item c:\Data -type Directory
New-Item c:\Data\Data_client1_$Timestamp.zip -type file
New-Item c:\Data\Data_client2_$Timestamp.zip -type file
New-Item c:\Data\Data_client3_$Timestamp.zip -type file
New-Item c:\Data\Data_client5_$Timestamp.zip -type file
New-Item c:\Data\Data_client6_$Timestamp.zip -type file
New-Item c:\Data\Data_client7_$Timestamp.zip -type file
exit
スクリプト:よう
$folder='C:\Data'
$clients = @("client1", "client2", "client3", "client4", "client5", "client6", "client7")
$files = Get-ChildItem $folder -recurse -include @("*.zip") |
Where-Object {($_.CreationTime -gt (Get-Date).Date)}
$files | Select-Object Name | Out-File $folder\result.txt
$files | Where-Object { ($_.Name -replace '.+?_([^_]+).*', '$1') -notin $clients} | Out-File $folder\result2.txt
ありがとうマーク、私はまだこれもチェックしています。 – bRins
ForEach-Objectループを使用して結果をファイルにパイプすることができるように私の答えを修正しました。 –
不足しているファイルに関するメッセージを別のエラーファイルに書きたい場合は、その書き込み警告を 'add-content-valueue 'のように置き換えてください。$ Client is missing!" -path $ folder \ missing.txt' –