Powershell создает своего рода хеш-таблицу содержимого текстовых файлов и соответствующих им имен файлов.

Я пытаюсь получить содержимое текстовых файлов, содержащих контрольные суммы md5 и соответствующие им имена файлов.

Пример:

file1.iso.md5 содержит контрольную сумму "g3d8d3d128200fa20a07e81c90f5f367"

file2.iso.md5 содержит контрольную сумму "97e4f28b330a01c02d839367da634299"

Я хотел бы получить еще один текстовый файл, который печатает все контрольные суммы рядом с соответствующим именем файла в одном документе.

NB Текстовые файлы имеют имена, идентичные реальным файлам, которым принадлежат включенные контрольные суммы, т.е. есть файл "file1.iso" плюс текстовый файл "file1.iso.md5".

Также обратите внимание, что я могу запускать код (однострочники) только непосредственно в оболочке. Я не должен запускать ".ps-файлы"!

(Я использую Shift + правый клик в соответствующей папке и открываю PowerShell из контекстного меню.)

До сих пор я мог только либо получить простой список файлов, используя «dir > dir.txt», затем скопировать его на лист excel и удалить файлы, мне не нужно вручную. Затем я запускал Get-Content .\*.md5 | Исходящий файл .\Concat.txt.

Затем я могу скопировать каждую строку рядом с соответствующим именем файла, однако это не дает мне большого преимущества по сравнению с открытием каждого файла по отдельности и последующим копированием содержимого на лист Excel.

Все сводится к тому, что я хочу создать простую хэш-таблицу из содержимого отдельных файлов.

Я надеюсь, что этого можно добиться, не сохраняя скрипт сначала как .ps, а затем запуская его.

Большое спасибо за изучение этого.

2 ответа

В однострочном коде вы можете использовать приведенный ниже код.

Он сохраняется в виде файла CSV, который можно открыть двойным щелчком в Excel.

      Get-ChildItem -Filter '*.md5' -File | Select-Object @{Name='File'; Expression = {$_.BaseName}},@{Name='MD5'; Expression = {$_ | Get-Content}} | Export-Csv -Path 'X:\somewhere\IsoFiles.csv' -NoTypeInformation -UseCulture

Конечно, измените путь для вывода, чтобы он соответствовал вашему собственному

Пожалуйста, попробуйте это

      gci|get-content|Select @{l='contents';e={$_}}, @{l='file'; e={$_.PSChildName}}, @{l='path';e={$_.PSParentPath}}

Совет для будущих выпусков. Вы можете передавать большинство команд на get-member. В этом случае обратите внимание на PropertyПредметы.

Другие вопросы по тегам