найти строку из нескольких файлов и заменить ее без создания нового файла

631
Meera

Я хочу найти строку, например, "date" из моих файлов папки, в которой есть несколько файлов ".c" и ".h", и заменить ее на "date 24-April-2018", используя командный файл. что делать? Пожалуйста, смотрите ниже код. Я хочу сделать то же самое, но не для одного файла Input.txt, я хочу сделать для нескольких файлов с расширениями папки

@echo off  setlocal enableextensions disabledelayedexpansion  set "search=@date" set "replace=@date 24-apr-2018"  set "textFile=Input.txt"  for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do ( set "line=%%i" setlocal enabledelayedexpansion >>"%textFile%" echo(!line:%search%=%replace%! endlocal ) 
2
Если вы определяете `textFile` с помощью` set "textFile =% 1" `, то вы можете вызвать этот пакетный файл (например, с именем` SetDate.cmd`), чтобы обновить файл в переданном параметре. Затем вы можете использовать `for% i в (DirPath \ FileMask) для вызова SetDate.cmd% i`, удваивая значение`% `, если оно находится в самом пакетном файле. AFH 5 лет назад 1
Я не понял вас. Можете ли вы дать мне решение для пакетного файла? Meera 5 лет назад 0
Недавно я начал использовать [GrepWin] (https://github.com/stefankueng/grepWin) для поиска и замены в нескольких текстовых файлах и местах. Я был впечатлен этим. Andi Mohr 5 лет назад 0
@Meera - я не знаю, что еще я могу сказать, чтобы объяснить, не вдаваясь в детали, которые потребовали бы ответа. Если ваш пакетный файл `SetDate.cmd`, отредактируйте его так, чтобы третья команда` set` стала `set" textFile =% 1 "`, а затем вызовите его с `for% f в (DirPath \ FileMask) вызовите SetDate. cmd% f` из командной строки или `for %% f in (DirPath \ FileMask) вызывают метод SetDate.cmd %% f` в другом пакетном файле. Надеюсь, понятно, что обозначают `DirPath` и` FileMask`. AFH 5 лет назад 0

0 ответов на вопрос

Похожие вопросы