我們每天都會收到來自多個客戶端的zip文件。文件名由以下部分組成:檢測文件夾中缺少的文件名
data_clientname_timestamp.zip
其中「數據」始終是相同的文字,「客戶端名」可以是任何東西,「時間戳」是文件的創建日期。
這些文件總是在同一個目錄中。客戶端名稱總是事先知道的,所以我知道應該接收哪些文件。
腳本應該做到以下幾點:
- 列出收到的所有文件(創建)今天
- 如果從一個或多個客戶機的文件丟失,寫「從客戶端文件..失蹤」到文件
- 我想列出一個變量的客戶端,所以這些可以很容易地改變。
我到目前爲止有:
$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 -value'替換該寫入警告$ Client is missing!「 -path $ folder \ missing.txt' –