Сохранение текстовой функции поиска и замены для файлов .dat в Powershell - PullRequest
1 голос
/ 09 января 2020

Я делаю скрипт, который найдет и заменит все слова на другое. Однако я не уверен, как сохранить изменения.

$file = Get-Content "C:\Script.dat" -Raw
$old = 'oldword' 
$new = 'newword'
$file.Replace($old,$new) 

Первоначально я использовал следующее, но это вызвало проблемы.

$file.Replace($old,$new) | Set-Content $file

Это вызвало проблему ошибку

Set-Content : Cannot find drive. A drive with the same *some random stuff*...

Как мне сохранить изменения и / или исправить вышеуказанную проблему?

Ответы [ 2 ]

2 голосов
/ 09 января 2020
$file = Get-Content "C:\Script.dat" -Raw
$old = 'oldword' 
$new = 'newword'
$file.Replace($old,$new) | Out-File -FilePath C:\Script.dat
1 голос
/ 09 января 2020

Вы были очень близки, но Set-Content нужны две вещи: путь к расположению файла и значение для хранения. Лично я предпочитаю перезаписывать переменные при использовании метода .Replace() вместо передачи его в другие командлеты.

Это сделает это:

$file = Get-Content "C:\Script.dat" -Raw
$old = 'oldword' 
$new = 'newword'
$file = $file.Replace($old,$new)
Set-Content -Path "C:\Script.dat" -Value $file

Если возможно, старайтесь избегать хранения файлов непосредственно на C:\, поскольку для записи часто требуются права администратора.

Кроме того, вы можете передать Set-Content аналогичным образом, как указано в начале, но вам все равно нужно указать путь к файлу:

$file.Replace($old,$new) | Set-Content "C:\Script.dat"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...