CMD/BAT - Найти файлы по маске и заменить в них строки

Аватара пользователя
hunk3r

CMD/BAT - Найти файлы по маске и заменить в них строки

Сообщение hunk3r »

Всем привет.

Давно читаю форум и часто пользуюсь батниками, но ума не дам как дописать следующее:

Есть директория E:\Steam\userdata\ в ней множество др. директорий, в каждой из которых есть файл с именем sharedconfig.vdf



Мне необходимо в каждом найденном по имени "sharedconfig.vdf" файле заменить строку "cloudenabled" "1" на "cloudenabled" "0" (строка находится в рандомном месте как по вертикали файла, так и по горизонтали)

Начало простое:



Код:

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

For /F %%i in ('"where /R E:\Steam\userdata\ "sharedconfig.vdf""') do (

Прошу, помогите закончить скрипт.
Аватара пользователя
megaloman

Re: CMD/BAT - Найти файлы по маске и заменить в них строки

Сообщение megaloman »

hunk3r, Хотелось бы потрогать файл руками - упакуйте пожалуйста и предоставьте.
Аватара пользователя
hunk3r

Re: CMD/BAT - Найти файлы по маске и заменить в них строки

Сообщение hunk3r »

Цитата hunk3r:



Есть директория E:\Steam\userdata\ в ней множество др. директорий, в каждой из которых есть файл с именем sharedconfig.vdf

Мне необходимо в каждом найденном по имени "sharedconfig.vdf" файле заменить строку "cloudenabled" "1" на "cloudenabled" "0" (строка находится в рандомном месте как по вертикали файла, так и по горизонтали)
CMD/BAT - Найти файлы по маске и заменить в них строки




В какой кодировке файлы?

powershell

script.ps1



Код:

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

dir "E:\Steam\userdata\" -rec -inc 'sharedconfig.vdf'|%{
    (gc $_.fullname -enc utf8 -raw) -replace '(?

для запуска:

run.bat



Код:

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

@echo off
echo Выполняем...
powershell -ex bypass .\script.ps1
echo Готово.
pause
Аватара пользователя
YuS_2

Re: CMD/BAT - Найти файлы по маске и заменить в них строки

Сообщение YuS_2 »

Цитата YuS_2:



В какой кодировке файлы?
CMD/BAT - Найти файлы по маске и заменить в них строки




Потому и требуем упаковать в архив и приложить. И кроме кодировки, там ещё может быть существенной такая радость механика, как тип конца строки (в трёх ипостасях).




Цитата hunk3r:



Кодировка 1251 как я понял.
CMD/BAT - Найти файлы по маске и заменить в них строки




hunk3r, вот, чтобы Вам не гадать, а пишущим не заниматься ручным набором содержимого файла — делайте то, что просят: упакуйте файл в архив и приложите к сообщению.
Аватара пользователя
hunk3r

Re: CMD/BAT - Найти файлы по маске и заменить в них строки

Сообщение hunk3r »

Цитата hunk3r:



Кодировка 1251 как я понял.
CMD/BAT - Найти файлы по маске и заменить в них строки




Так... вот выше правильно говорят - упакуйте и приложите, а там увидим Изображение

А пока, по Вашим данным, скрипт выше поправил...




Цитата Iska:



как тип конца строки (в трёх ипостасях)
CMD/BAT - Найти файлы по маске и заменить в них строки




в варианте на powershell, это не столь важно...
Аватара пользователя
YuS_2

Re: CMD/BAT - Найти файлы по маске и заменить в них строки

Сообщение YuS_2 »

Цитата hunk3r:



торопился
CMD/BAT - Найти файлы по маске и заменить в них строки




Спешить не надо Изображение

Кодировка там UTF8.

Вернул кодировку в скрипте...
Аватара пользователя
hunk3r

Re: CMD/BAT - Найти файлы по маске и заменить в них строки

Сообщение hunk3r »

Цитата YuS_2:



s*
CMD/BAT - Найти файлы по маске и заменить в них строки




Спасибо!)

Если я правильно понимаю, то \s*\ между кавычками - это любое количество пробелов?
Вложения
sharedconfig.7z
(765 байт) 0 скачиваний
sharedconfig.7z
(765 байт) 0 скачиваний
Аватара пользователя
YuS_2

Re: CMD/BAT - Найти файлы по маске и заменить в них строки

Сообщение YuS_2 »

Цитата hunk3r:



это любое количество пробелов?
CMD/BAT - Найти файлы по маске и заменить в них строки




это ноль или более пробельных символов, а не только пробелов...
Ответить

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