Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Найти файлы по маске и заменить в них строки

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

Аватара для hunk3r

Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем привет.
Давно читаю форум и часто пользуюсь батниками, но ума не дам как дописать следующее:
Есть директория E:\Steam\userdata\ в ней множество др. директорий, в каждой из которых есть файл с именем sharedconfig.vdf

Мне необходимо в каждом найденном по имени "sharedconfig.vdf" файле заменить строку "cloudenabled" "1" на "cloudenabled" "0" (строка находится в рандомном месте как по вертикали файла, так и по горизонтали)
Начало простое:
Код: Выделить весь код
For /F %%i in ('"where /R E:\Steam\userdata\ "sharedconfig.vdf""') do (
Прошу, помогите закончить скрипт.

Отправлено: 18:54, 09-06-2018

 

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Iska:
Командлеты и так уже перегружены всяческими параметрами (и, что самое печальное, многочисленными умолчаниями) по самое нехочу, причём картина, зачастую, складывается удручающая. »
Да что там удручающего? Параметры есть, иногда их много, но есть же справка, причем встроенная и с примерами...
Параметры есть в любом языке, но вот справка аналогичная к ним... где ещё есть такая же? Ну, я имею в виду wsh и cmd, для сравнения... а про функционал можно и не упоминать даже...
Кроме того, где есть ещё такая реализация конвейеров, причем с объектами вместе?

Цитата Iska:
Я бы лично предпочёл какой-нибудь интерпретатор для .Net по аналогу с WSH на основе той же сладкой парочки VB/JS. »
Сколько людей, столько и мнений, как говорится
Если бы с WSH было бы всё так радужно, то никакой монад на свет и не появился бы...
Да и портянки кодов можно посравнивать при аналогичных задачах... powershell, явно выиграет.

-------
scio me nihil scire. Ѫ


Отправлено: 13:06, 10-06-2018 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 93
Благодарности: 2

Профиль | Отправить PM | Цитировать


Добрый день!
Хотел адаптировать привелденный здесь скрипт для своих нужд, но что-то не получается..
Нужно во всех файлах Description поменять номер версии находящийся в теге <targetVersion>14.4.0</targetVersion>
Код: Выделить весь код
dir "D:\WINDOWS\" -rec -inc 'Description'|%{
    (gc $_.fullname -enc utf8 -raw) -replace '(?<=\"<targetVersion>\"\s*\")14.4.0(?=\")','14.4.1'|`
    set-content $_.fullname -enc utf8
}
При запуске пишет ошибку "не удается найти параметр, соответствующий имени параметра "raw".
Прошу помочь с исправлением скрипта!

Нашел еще такой пример, но тоже не работает..
Код: Выделить весь код
$sSourceFolder   = 'D:\WINDOWS'
$sSourceFileName = 'Description'

$sString4Found   = '14.4.0'
$sString4Replace = '14.4.1'

if(Test-Path -Path $sSourceFolder -PathType Container) {
    Get-ChildItem -Path $sSourceFolder -Filter $sSourceFileName -File -Recurse | ForEach-Object -Process {
        $sContent = Get-Content -Path $_.FullName -Encoding Oem

        if($sContent -icontains $sString4Found) {
            Write-Host $_.FullName
            $sContent.Replace($sString4Found, $sString4Replace) | Set-Content -Path $_.FullName -Encoding Oem
        }
    }
} else {
    Write-Host "Can't find source folder $sSourceFolder." -ForegroundColor Red
}
На этот раз пишет, что "не удается найти параметр, соответствующий имени параметра "File".

Отправлено: 12:05, 07-06-2019 | #22


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата pzh2393:
При запуске пишет ошибку "не удается найти параметр, соответствующий имени параметра "raw". »
Цитата pzh2393:
"не удается найти параметр, соответствующий имени параметра "File". »
Всё это следствие устаревшей версии powershell. Чтобы всё заработало, необходимо её обновить.

-------
scio me nihil scire. Ѫ


Отправлено: 13:03, 07-06-2019 | #23


Пользователь


Сообщения: 93
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
Чтобы всё заработало, необходимо её обновить. »
А обновить ее не обновляя саму виндовс возможно?

Отправлено: 13:10, 07-06-2019 | #24


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Возможно. У Вас какая версия ОС?

Отправлено: 14:06, 07-06-2019 | #25


Пользователь


Сообщения: 93
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
какая версия ОС? »
Windows 7 x86

Отправлено: 15:15, 07-06-2019 | #26


Пользователь


Сообщения: 93
Благодарности: 2

Профиль | Отправить PM | Цитировать


Вроде установил более новую версию powershell (7.0.0-preview.1), при запуске теперь нет тех ошибок, но и замена все равно не происходит.

Отправлено: 16:14, 07-06-2019 | #27


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата pzh2393:
но и замена все равно не происходит »
так это естественно, т.к. шаблон регвыра совсем не соответствует этому:
Цитата pzh2393:
<targetVersion>14.4.0</targetVersion> »
- здесь нет кавычек. А внутри файлов они присутствуют? Если нет, то:
Код: Выделить весь код
dir 'D:\WINDOWS' -rec -inc 'Description' |%{
    (gc $_.fullname -enc utf8 -raw) -replace '(?<=<targetVersion>\s*)14.4.0(?=\s*<)','14.4.1' |
    set-content $_.fullname -enc utf8
}

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:59, 07-06-2019 | #28


Пользователь


Сообщения: 93
Благодарности: 2

Профиль | Отправить PM | Цитировать


YuS_2, благодарю, теперь работает.

Отправлено: 18:38, 07-06-2019 | #29



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Найти файлы по маске и заменить в них строки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Можно ли найти файлы созданные за сегодняшний день и дать отчет о них ufooo Скриптовые языки администрирования Windows 12 20-04-2016 01:49
CMD/BAT - Найти в подкаталогах файлы по маске и вывести в текст список тех, у которых первые 2 surgutfred Скриптовые языки администрирования Windows 2 27-01-2016 19:07
CMD/BAT - [решено] Отделить слово от строки по маске blackeangel Скриптовые языки администрирования Windows 2 11-11-2015 23:07
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox ultrarare Скриптовые языки администрирования Windows 11 03-07-2013 14:37
CMD/BAT - [решено] Нужно найти все файлы *.log в папке dir и подпапках и заменить на файлы нулевой длины dclxvi Скриптовые языки администрирования Windows 4 04-07-2012 21:28




 
Переход