我有 100 個(ish).pdf 檔案,我已將它們復制到 88 個不同的檔案夾中。我現在只剩下 1 個 .pdf,我想我可能不小心將 1 個 .pdf 復制到了兩個檔案夾中。
我嘗試制作一個貫穿所有檔案夾的腳本,并檢查該檔案是否已存在于該檔案夾中。但是,我想我可能已經使用代碼陷入了困境:
$ParentFolder = Get-ChildItem -Path "\\pc90555\c$\Users\mmdu\OneDrive - COWI\Documents\kort2021"
$childItem = @()
Foreach ($subFolders in $ParentFolder){
$childItem = Get-ChildItem -Path "\\pc90555\c$\Users\mmdu\OneDrive - COWI\Documents\kort2021\$subFolders"
foreach ($item in $childItem)
{
$itemPath = Get-ChildItem ($item.DirectoryName "\" $item)
foreach ($items in $itemPath)
{
if(Test-Path -Path $childItem)
{
$exists = $items.DirectoryName
write-host "$items exist in $exists"
}
}
}
}
最后,我想從每個檔案夾中取出一個檔案,在所有檔案夾中運行它,然后基本上告訴我該檔案是否已經在一個檔案夾中。
我很感激這方面的任何幫助!
uj5u.com熱心網友回復:
如果您想要一些健壯的(但耗時)應該能夠從您的起始位置找到重復項(即使檔案名或擴展名已更改):
# Define the starting point
$ParentFolder = "\\pc90555\c$\Users\mmdu\OneDrive - COWI\Documents\kort2021"
$duplicates = Get-ChildItem $ParentFolder -Recurse -File |
Get-FileHash -Algorithm MD5 | Group-Object Hash |
Where-Object Count -GT 1
然后,假設它發現重復,您可以檢查$duplicates變數以獲取它們的路徑:
PS /home/user/Documents> $duplicates[1]
Count Name Group
----- ---- -----
2 DA312CD92656EDCD5F7CF8DF… {Microsoft.PowerShell.Comman....
PS /home/user/Documents> $duplicates[1].Group
Algorithm Hash Path
--------- ---- ----
MD5 DA312CD92656EDCD5F7CF8DFB07CF0DC /home/user/Documents/test.txt
MD5 DA312CD92656EDCD5F7CF8DFB07CF0DC /home/user/Documents/test2.ext
uj5u.com熱心網友回復:
以下是如何簡單地執行此操作,將其分解為多個步驟。
- 遞回掃描目錄樹中的
.pdf檔案 - 檢查結果以查看它是否包含您的檔案不應該存在的位置
$myFileName = "ProposalDraft-Final.FINALv2.pdf"
$directoryToSearch = "\\pc90555\c$\Users\mmdu\OneDrive - COWI\"
$pdfFiles = Get-ChildItem -path $directoryToSearch -Include *.pdf
這為您留下了一個$pdfFiles包含所有 PDF的陣列。這很有用,因為它將擁有完整的 FileInfo,包括路徑、大小、擴展名和其他有用資訊。
現在來看看您是否將檔案放在太多地方!
$pdfFiles | Where Name -eq $myFileName
輸出將是一個易于閱讀的串列,顯示找到匹配檔案的位置。
在此示例螢屏截圖中,我創建了幾個目錄并在每個目錄中放置了具有所需名稱的檔案。您可以查看結果如何按它們出現在哪個目錄中進行排序,以便您輕松查找是否存在重復項。

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384894.html
標籤:电源外壳
