保存到与具有不同扩展名的给定路径同名的文件

Saving to file of same name as given path with different extension

我想做的事:为 Windows Powershell 设计一个命令,让用户输入他们想要校验和的文件的路径以及他们首选的校验和算法。结果应保存在与该文件同名的文件中,位于同一目录中,但扩展名为校验和算法。

示例:C:\path\to\file.pdf 写入命令,用户将找到包含 SHA-256 校验和的 C:\path\to\file.sha256 作为文本。

我目前拥有的:

Set-Variable -Name "pfad" -Value "C:\path\to\file.pdf"; Set-Variable -Name "algorithmus" -Value SHA256; certutil -hashfile $pfad $algorithmus > $pfad + "." + $algorithmus

如果这行得通,那么 return 一个 file.pdf.SHA256 就好了。但是,它会用包含错误消息的同名文件覆盖原始文件。

不幸的是,某些 bash 脚本对我来说不可行。它必须是一个命令,用户可以将他们想要的值复制到命令的一个位置。

我研究了几个函数,如 SplitPath 等,但我觉得应该有一种相当简单的方法来做我想做的事。这是我第一次处理 Windows Powershell,所以我对我的可能性一无所知。

我认为这会满足您的要求。
您可以声明它们并将它们设置为等于 Read-Host 而不是设置变量,这将获得用户输入。

然后您可以将数据通过管道传输到一个格式列表中,然后传输到一个名为您想要的名称的 csv 文件中。

$filePath = Read-Host "Please enter your filepath (e.g. C:\path\to\documents)"
$fileName = Read-Host "Please enter your filename (e.g. file.pdf)"
$algorithmus = Read-Host "Please enter your Algorithm format (e.g. SHA256, SHA1, MD5)"

Get-FileHash -Path "$filePath$fileName" -Algorithm "$algorithmus" | Export-csv "$filePath$fileName.$algorithmus" -NoTypeInformation

Get-FileHash Docs

编辑:这将在与原始文件相同的目录中创建 file.pdf.sha256