У меня более 1000 пакетных файлов в папке.Найти и заменить в нескольких командных файлах
Есть ли способ запустить скрипт, чтобы найти определенную текстовую строку (скажем, Яблоки) и заменить Яблоки (Mangos) во всех файлах?
Заранее спасибо
Шей
У меня более 1000 пакетных файлов в папке.Найти и заменить в нескольких командных файлах
Есть ли способ запустить скрипт, чтобы найти определенную текстовую строку (скажем, Яблоки) и заменить Яблоки (Mangos) во всех файлах?
Заранее спасибо
Шей
Здесь вы можете найти множество примеров в stackoverflow для do'it в чистом batch-script
.
Посмотрите здесь replace
части:
How to replace string inside a bat file with command line parameter string
Или здесь:
How can you find and replace text in a file using the Windows command-line environment?
И здесь:
Loop through file names in a Batch Script
и здесь:
Iterate all files in a directory using a 'for' loop
к loop
над файлами в справочник ....
Это всего лишь несколько, но есть еще много.
Теперь Если вы можете рассмотреть программное обеспечение сторонних производителей ...
... Я не могу без рекомендовать WinGrep for Windows, очень и очень полезно, и, конечно же, автоматически заменить для результатов поиска (также Regex поиск)
Успехов любым способом
[править]
(я добавляю это, потому что st2 был принят раствор)
Я также Sub limeText, а для меня ST2 + winGrep + DiffMerge это фантастическое трио для разработки под Windows.
Вы можете использовать Sublime Text (это бесплатная неограниченная оценка) «Найти> Найти в файлах». Параметры поиска и замены появятся внизу. Введите «яблоки» в «Найти:», введите свое местоположение в «Где» и введите «mangos» в «replace», затем нажмите «Заменить». Удачи!
Thanks mate, Мне было интересно, если есть решение, которое не потребует стороннего программного обеспечения? – Shei7141
@ Shei7141 then not not mark it as resolved yet. люди вообще игнорируют решаемые вопросы, когда ищут проблемы, чтобы помочь решить :-) – UpAndAdam
Причина, я отметил, что она решена просто потому, что эта программа делает трюк .... но вы правы ... без знака теперь .... Если кто-нибудь знает сценарий, который был бы замечательным .... Я могу найти и заменить для одного файла .... но не может показаться, что мне не нравится моя глобальная находка и замена во всех файлах в указанной папке ... – Shei7141
Существует очень простое решение с использованием цикла FOR, связанного с hybrid JScript/batch utility called REPL.BAT. Утилита - это чистый скрипт, который запускается на любой современной машине Windows с XP и дальше - никаких сторонних исполняемых файлов не требуется. Он выполняет поиск и замену регулярных выражений на stdin и записывает результат в stdout.
Предполагая REPL.BAT находится в текущем каталоге, или еще лучше, где-то в вашем PATH:
for %%F in (*.bat) do (
type "%%F"|repl Apples Mangos >"%%F.new"
move /y "%%F.new" "%%F"
)
REPL.BAT имеет множество опций, которые делают его достаточно мощным для такого небольшого фрагмента кода. В скрипт встроена полная документация.
Дэйв, простенькая петля будет обрабатывать несколько файлов дважды. для/F необходимо. – foxidrive
@foxidrive - Вы уверены? Это меня удивило бы, хотя я не проверял. Я думал, поскольку измененный файл имеет то же имя, что и оригинал, он никогда не будет перерабатывать. – dbenham
Я только что протестировал его, и он не перерабатывает одни и те же имена файлов - он отлично работает. – foxidrive
Отметьте «Швейцарский файловый нож»: http://www.stahlworks.com/dev/swiss-file-knife.html –
Проверьте это: https://findandreplace.codeplex.com/documentation. Я знаю, что это старый вопрос, но Google приводит меня сюда, и я не смог найти хороший ответ. –