При написании сценария пакетного файла с использованием командной строки Windows, часто возникает необходимость изменить каждое вхождение определенного текста в файле (например, "FOO") на другой (например, "BAR"). Каким образом это можно сделать наиболее простым способом? Существуют ли встроенные функции для этого?
Множество ответов здесь помогли мне ориентироваться в нужном направлении, однако ни один из них не подходил для меня, поэтому я публикую свое решение.
У меня установлена Windows 7, которая поставляется с встроенным средством PowerShell. Вот скрипт, который я использовал для поиска и замены всех вхождений текста в файле:
powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt"
Разберем его:
PowerShell.exe должен уже быть частью вашего операционной системы, однако, если это не так, вы можете добавить его. Местоположение на моем компьютере: C:\WINDOWS\system32\WindowsPowerShell\v1.0
Обновление Очевидно, что в современных системах Windows есть встроенный PowerShell, который позволяет вам получить доступ к нему напрямую с помощью:
(Get-Content myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt
Добавить комментарий