Я пытаюсь сравнить содержимое двух текстовых файлов и выводить на консоль только различия.
Первый текстовый файл основан на именах файлов в папке. $AsyFolder = Get-ChildItem -Path .\asy-data -Name
Затем я удаляю префикс имени файла, который установлен пользователем и является одинаковым для каждого файла и отделяется от соответствующей информации с помощью da sh.
$AsyFolder| ForEach-Object{$_.Split("-").Replace("$Prefix", "")} | Where-Object {$_}|Set-Content -Path .\templog.txt
Результат выглядит как $ Asyfolder Output
bpm.art
gbr.pdf
asy.pdf
fab.pdf
as1.art
odb.tgz
ccam.cad
read_me_asy.txt
Существует еще один файл, который является ссылкой и содержит суффиксы файлы, которые должны быть там. Это выглядит так: Справочный файл
tpm.art
bpm.art
gbr.pdf
asy.pdf
fab.pdf
as1.art
as2.art
odb.tgz
xyp.txt
ccam.cad
И его содержимое получено с $AsyTemplate = Get-Content -Path C:\Users\asy_files.txt
Лог c выглядит следующим образом
$AsyTemplate |
ForEach-Object{
If(Select-String -Path .\templog.txt -Pattern $_ -NotMatch -Quiet){
Write-Host "$($_)"
}
}
Я пробовал различные способы настройки templog.txt с помощью -InputObject: использование Get-Content, Get-Content -Raw, переменной, запись массива вручную. Я также попытался удалить -NotMatch и использовать -eq $ False для вывода строки выбора.
Каждый раз, хотя вывод - это просто содержимое asy_files.txt (справочный файл). Кажется, мне все равно, что находится в templog.txt ($ AsyFolder Output).
Я также пробовал использовать метод compare-object / where-object, и он просто говорит, что оба файла совершенно разные.