我有100,000個文件(圖片),這是由他們的UPC代碼命名(8到14個數字),其次是下劃線和其他數字的文件夾:如何使用PowerShell比較文件夾和數組中的子串?
000_00_1
我有20,000獨特的UPC列表代碼在一個單詞文件(用逗號隔開),應該匹配這些圖片的五分之一(我也有一個Excel表格中的這個列表)。
000000000000, 000000000001, 000000000011
我想要做的,就是找到(20000個元素列表)和文件,我的陣列之間的匹配我的文件夾中,以提取只能從文件夾中的圖片20000。
我已經被切割的文件名達啓動了「__」,從而只得到文件名的相關部分:
$FName = ($File -split '_')[0]
爲了使事情變得更難,我還需要添加對數組中的元素使用通配符「*」,因爲文件名開頭的一些額外的「0」可能已被添加並且不存在於我們的數組中。例如,數組「05713901」中的這個UPC指的是這個文件名「00005713901_00.png」;所以要找到匹配我將不得不使用「like」運算符。
後來,當我發現那些比賽,我就不得不使用布展項目到一個新的文件夾或子文件夾。
這是我開始的代碼沒有任何結果:
$Directory = "C:path_to_my_folder";
$AllFiles = Get-ChildItem $Directory
$FileNames = New-Object System.Collections.ArrayList;
foreach($File in $AllFiles)
{
$FName = ($File -split '_')[0]
$FileNames.Add($FName)
}
$Upc = Get-Content C:\path_to_my_word.docx
Compare-Object $FileNames $Upc
任何文件'比較-Object',只是要告訴你2個陣列是否嚴絲合縫(他們不會,他們是不同大小的哪個) ,或者哪些條目*不符合您的期望。 –
感謝您的澄清!還有一個命令,我現在明白了:) – Sasandre