2017-02-27 50 views
-2

我想在這裏找到兩件事。我有一個文件夾中的數千個文件。我們可以將相同的邏輯應用於所有文件如何檢查具有相同名稱但具有不同擴展名的文件是否存在於某個目錄中Powershell

  1. 如果具有相同名稱但具有不同擴展名的文件存在,
  2. 如果存在,我需要比較lastwritetime或timestamp來找出哪個文件更新。

例如,如果我有一個文件culture.txt我應該有一個相應的文件culture.log

如果我有culture.txtculture.log文件丟失,那麼它的一個問題,所以我想輸出所有.txt文件的名稱,相應的.log文件丟失。

如果culture.txtculture.log都可用,那麼我想檢查culture.txt是否在culture.log之後生成。如果在culture.log之前生成了culture.txt,那麼存在一個問題,因此,我需要輸出這樣的.txt文件的名稱,並在此問題中指出「Culture.txt是在culture.log之前生成的,請重新運行該程序」。

任何人誰可以提供幫助,將不勝感激。謝謝。

如果我能得到相同的問題需要多一點幫助。 Esperento建議的代碼完全正常工作,但需求已更新。在一個文件夾中,我有多個擴展名的文件,不僅限於.txt和.log。我可以將.doc,.docx,.xls和許多其他文件放在同一個文件夾中。 現在關於更新的要求。我必須僅查找具有3個特定擴展名的文件名。其中之一是程序文件。顯然應該首先生成哪一個。我們說Culture.prog。那麼當我運行Culture.Prog時,將分別生成兩個文件,分別爲culture.log first和culture.txt。 很顯然,prog上的時間戳比log更早,並且日誌上的時間戳比txt更早,而txt最後產生了。 我們必須檢查2個相應文件(日誌和編程)的可用性,僅引用最後生成的.txt文件。 因此,首先檢查是否有2個相應的文件可用於.txt文件。接下來的檢查是按順序對應這3個文件的時間戳。只有當條件不滿足時才需要輸出,否則,如果我們不輸出任何內容,則輸出。例如,如果對於culture.txt,如果缺少.log或.prog文件,則必須輸出缺少哪個或哪兩個文件的事實。如果txt文件的時間戳比log和/或prog更早,我們必須輸出該事實。我希望我的要求清楚。謝謝

+4

這是一個相當簡單的任務。你試過什麼了? –

+0

我嘗試了各種代碼,例如$ log =(gci -Filter * .log |%{$ _ BaseName}) $ txt =(gci -Filter * .txt |%{$ _。BaseName})|其中{$ log.basename -eq $ _。basename} [string] $ Data = Compare-Object -ReferenceObject $ txt -DifferenceObject $ log - 屬性名稱,LastWriteTime | Sort-Object Name | Out-String foreach-object | { if($ log - $ _。Lastwritetime)-gt($ txt - $ _。Lastwritetime) Write-Host「xxxxxxxxxxxxxxxxxxxl」} – Sanjay

回答

1

試試這個:

#list file and group by name without extension 
Get-ChildItem "C:\temp\test" -file -filter "*.*" | group Basename | 
%{ 
    $group= $_.group 

    # if not same name, missing message 
    if ($_.Count -eq 1) 
    { 
     "'{0}' are missing" -f $group.Name 
    } 
    #else search into current group file with great creation time and print message 
    else 
    { 
     $group | % {$file=$_; $group | %{if ($_.CreationTime -gt $file.CreationTime) {"'{0}' has beeen generated before '{1} " -f $file.Name, $_.Name} } } 
    } 

} | out-file "C:\temp\test\result.txt" 
+0

Thank you so much Esperento 。你的幫助是真正的讚賞。它的工作很好。 – Sanjay

+0

歡迎您,祝您有美好的一天;) – Esperento57

相關問題