Итак, у меня есть целая большая папка с текстовыми файлами, в которой я хотел бы изменить строку unamed в каждом из них на имя самого файла, исключая расширение.
Пока что с моими навыками мусора я придумал следующее, но это не дает того, что я ищу, так как оно меняет имя на каждый собранный файл
$path = "*.txt"
$filename = Get-Item $path | Select-Object -ExpandProperty BaseName
$Change = Get-Content $path
$Change | ForEach-Object {$_ -Replace "unamed", $filename} | Set-Content $path
Так что в основном что-то вродеthis
Имя этого файла не указано.
становится
Имя этого файла: File1Name File2Name File3Name.
Существует также побочная проблема, с которой я сталкиваюсь, когда результаты всех файлов объединяются в один файл (поэтому содержимое файла 1 теперь будет также содержать содержимое всех других файлов).Как я могу получить результаты, которые я ищу, о, мудрые?
Если есть способ уладить это с помощью обычной командной строки вместо powershell, то я согласен и с этим (я нашел это, но имел проблему с replace_stringнедопустимая команда? Пакетный скрипт, который заменяет статическую строку в файле именем файла )