2013-09-04 5 views
0

У меня более 1000 пакетных файлов в папке.Найти и заменить в нескольких командных файлах

Есть ли способ запустить скрипт, чтобы найти определенную текстовую строку (скажем, Яблоки) и заменить Яблоки (Mangos) во всех файлах?

Заранее спасибо

Шей

+0

Отметьте «Швейцарский файловый нож»: http://www.stahlworks.com/dev/swiss-file-knife.html –

+0

Проверьте это: https://findandreplace.codeplex.com/documentation. Я знаю, что это старый вопрос, но Google приводит меня сюда, и я не смог найти хороший ответ. –

ответ

1

Здесь вы можете найти множество примеров в 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.

2

Вы можете использовать Sublime Text (это бесплатная неограниченная оценка) «Найти> Найти в файлах». Параметры поиска и замены появятся внизу. Введите «яблоки» в «Найти:», введите свое местоположение в «Где» и введите «mangos» в «replace», затем нажмите «Заменить». Удачи!

+0

Thanks mate, Мне было интересно, если есть решение, которое не потребует стороннего программного обеспечения? – Shei7141

+0

@ Shei7141 then not not mark it as resolved yet. люди вообще игнорируют решаемые вопросы, когда ищут проблемы, чтобы помочь решить :-) – UpAndAdam

+0

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

1

Существует очень простое решение с использованием цикла 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 имеет множество опций, которые делают его достаточно мощным для такого небольшого фрагмента кода. В скрипт встроена полная документация.

+0

Дэйв, простенькая петля будет обрабатывать несколько файлов дважды. для/F необходимо. – foxidrive

+0

@foxidrive - Вы уверены? Это меня удивило бы, хотя я не проверял. Я думал, поскольку измененный файл имеет то же имя, что и оригинал, он никогда не будет перерабатывать. – dbenham

+0

Я только что протестировал его, и он не перерабатывает одни и те же имена файлов - он отлично работает. – foxidrive

Смежные вопросы