PowerShell - [решено] Потребовалось заменить текст в файлах

Ответить
 • Просмотры: 1
Аватара пользователя
rudimko

Re: PowerShell - [решено] Потребовалось заменить текст в файлах

Сообщение rudimko »

Код:

Код: Выделить всё

PS> "Apr 17 06:08:40 mail pop3d-ssl: LOGIN, user=username@domain.ru, ip=[::ffff:192.168.0.100], port=[56795]" -replace ".+user=(.+), ip.+",'$1'
username@domain.ru
Аватара пользователя
4524

Re: PowerShell - [решено] Потребовалось заменить текст в файлах

Сообщение 4524 »

Доброго дня.

Апну тему.

По вышеупомянутому образцу написал скрипт, но обновить действующий файл не получается - PS выдаёт, что файл "занят другим приложением".

При этом, если в скрипте название выходного файла другое, то он создаёт в этой же директории изменяемый файл.

В чём может быть ошибка?

Спасибо заранее.
Аватара пользователя
Busla

Re: PowerShell - [решено] Потребовалось заменить текст в файлах

Сообщение Busla »

Цитата 4524:



В чём может быть ошибка?
PowerShell - [решено] Потребовалось заменить текст в файлах




Только можно догадываться. Схема такая:



Код:

Код: Выделить всё

(Get-Content file.txt) -replace 'регулярное_выражение','замена' | Set-Content file.txt
Аватара пользователя
Busla

Re: PowerShell - [решено] Потребовалось заменить текст в файлах

Сообщение Busla »

Цитата 4524:



PS выдаёт, что файл "занят другим приложением"
PowerShell - [решено] Потребовалось заменить текст в файлах




При перезаписи файла по конвееру посредством Set-Content такая ошибка может быть.

Сохраняйте файл через Out-File:



Код:

Код: Выделить всё

(Get-Content file.txt) -replace 'регулярное_выражение','замена' | Out-File file.txt -Encoding utf8

Если с командлетом Set-Content, то так:



Код:

Код: Выделить всё

$i = (Get-Content file.txt) -replace 'регулярное_выражение','замена'
Set-Content file.txt -Encoding utf8 -Value $i
Аватара пользователя
Uragan66

Re: PowerShell - [решено] Потребовалось заменить текст в файлах

Сообщение Uragan66 »

Цитата Uragan66:



При перезаписи файла по конвееру посредством Set-Content такая ошибка может быть.
PowerShell - [решено] Потребовалось заменить текст в файлах




Ни разу не сталкивался. Приведите пример.
Аватара пользователя
Foreigner

Re: PowerShell - [решено] Потребовалось заменить текст в файлах

Сообщение Foreigner »

Цитата Foreigner:



Приведите пример
PowerShell - [решено] Потребовалось заменить текст в файлах




Foreigner, так пример то выше, у 4524...

У меня при редактировании или создании плейлистов часто такая ошибка была при использовании Set-Content по конвееру. Сейчас просто нету свежего примера.
Аватара пользователя
Uragan66

Re: PowerShell - [решено] Потребовалось заменить текст в файлах

Сообщение Uragan66 »

Цитата Uragan66:



так пример то выше, у 4524...
PowerShell - [решено] Потребовалось заменить текст в файлах




У него нет никакого примера.




Цитата Uragan66:



У меня при редактировании или создании плейлистов часто такая ошибка была при использовании Set-Content по конвееру.
PowerShell - [решено] Потребовалось заменить текст в файлах




Get-Content в скобках позволяет полностью считать файл и открыть его на запись. Поэтому ошибка может быть только в том случае, если он занят каким-либо третьим процессом, из-за нехватки прав или в силу аттрибутов.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»