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
Предметы.