Сохранение в файл с тем же именем, что и указанный путь, с другим расширением

#powershell #certutil

Вопрос:

Что я хочу сделать: разработайте команду для Windows Powershell, которая позволит пользователю ввести путь к файлу, контрольную сумму которого он хочет получить, а также предпочтительный алгоритм контрольной суммы. Затем результат должен быть сохранен в файле с тем же именем, что и этот файл, в том же каталоге, но с алгоритмом контрольной суммы в качестве его расширения.

Пример: C:pathtofile.pdf записывается в команду, и пользователь найдет C:pathtofile.sha256 который содержит контрольную сумму SHA-256 в виде текста.

Что у меня есть до сих пор:

 Set-Variable -Name "pfad" -Value "C:pathtofile.pdf"; Set-Variable -Name "algorithmus" -Value SHA256; certutil -hashfile $pfad $algorithmus > $pfad   "."   $algorithmus
 

Если бы это сработало, он вернул бы a file.pdf.SHA256 , что было бы прекрасно. Однако он перезаписывает исходный файл файлом с тем же именем, содержащим сообщение об ошибке.

К сожалению, какой-то сценарий bash для меня нежизнеспособен. Это должна быть одна команда, которую пользователи смогут скопировать со своими желаемыми значениями в одно место команды.

Я изучил несколько функций, таких как SplitPath и т. Д., Но я чувствую, что должен быть довольно простой способ делать то, что я хочу. Это мой первый опыт работы с Windows Powershell, поэтому я очень мало знаю о своих возможностях.

Ответ №1:

Я думаю, это сделает то, что вы хотите.
Вместо того, чтобы задавать переменные, вы можете просто объявить их и установить их равными Read-Host , что приведет к вводу данных пользователем.

Затем вы можете просто передать данные в список форматов, а затем в файл csv с именем, которое вы хотели.

 $filePath = Read-Host "Please enter your filepath (e.g. C:pathtodocuments)"
$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
 

Получить-Файловые документы

Изменить: Это создаст файл file.pdf.sha256 в том же каталоге, что и исходный файл.

Комментарии:

1. Format-List просто выходы на консоль. Export-csv предназначен для вывода объектов в виде структурированных данных. Оператору просто нужно .Hash , чтобы значение было записано в этом файле «алгоритмус»..