Powershell 创建文本文件内容及其相应文件名的一种哈希 table

Powershell create a sort of hash table of the contents of text files and their corresponding file names

我正在尝试获取包含 md5 校验和及其对应文件名的文本文件的内容。

示例:

file1.iso.md5 包含校验和“g3d8d3d128200fa20a07e81c90f5f367”

file2.iso.md5 包含校验和“97e4f28b330a01c02d839367da634299”

我想要另一个文本文件,它在一个文档中的相应文件名旁边打印所有校验和。

N.B。文本文件的名称与包含的校验和所属的实际文件相同,即有一个文件“file1.iso”加上一个文本文件“file1.iso.md5”.

另请注意,我仅限于直接在 shell 中使用 运行ning 代码(一行代码)。我不能执行“.ps-files”!

(我在相应的文件夹中使用 shift + 右键单击​​并从上下文菜单中打开 PowerShell。)

到目前为止,我只能使用“dir > dir.txt”获得一个简单的文件列表,然后将其复制到 excel sheet 并删除文件,我不需要手动。然后,我会 运行 Get-Content .\*.md5 |输出文件 .\Concat.txt.

然后,我可以将每一行复制到相应的文件名旁边,但是与单独打开每个文件然后将内容复制到 excel sheet.

归根结底,我想从单个文件的内容创建一个简单的散列 table。

我希望可以在不先将脚本保存为 .ps 然后 运行ning 的情况下实现。

非常感谢您的关注。

请试试这个

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

未来问题的提示。您可以将大部分命令通过管道传输到 get-member。在这种情况下,请查看 Property 项。

在one-liner中,您可以使用下面的代码。

它保存为 CSV 文件,您可以double-click在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

当然,更改输出路径以适合您自己的路径