2017-02-11 9 views
-2

У меня проблема с битой.BAT Найти текст в строке> Заменить всю строку

@echo off 
setlocal enableextensions disabledelayedexpansion 

set "search=time_upper_limit:" 
set "replace=time_upper_limit: 9999999" 

set "textFile=game.sii" 

for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
    set "line=%%i" 
    setlocal enabledelayedexpansion 
    >>"%textFile%" echo(!line:%search%=%replace%! 
    endlocal 
) 

как сделать .bat; нашел строку с текстом, а затем заменил всю строку; файл имеет более 24 000 строк; Потребовалось почти 20 минут :(; это может быть сделано в более быстрый способ,

только одна строка в файле, чтобы заменить

линии заменить старт с помощью теста «time_upper_limit:»

+0

В чем проблема? – DavidPostill

+1

Этот скрипт работает как запроектированный. Купите лучший компьютер. – SomethingDark

+0

Это просто _one line_, которую нужно заменить? Или могут быть _северные линии_? – Aacini

ответ

-1

I не видит ничего плохого сценарий вы публикуемые, которые должны привести к такому роду время выполнения. Если расшифровка не как-то перепуталось с входным файлом.

Если вам не нужны пустые строки должны быть сохранены и game.sii правильно расшифрованы, (без неудобных/ядовитых символов), что-то, как это должно работать:

@Echo Off 
Ren "game.sii" "game.bak" 
(For /F "UseBackQ EOL=: Tokens=1* Delims=:" %%A In ("game.bak" 
) Do If "%%A"==" time_upper_limit" (Echo= time_upper_limit: 9999999 
    ) Else If "%%B"=="" (Echo=%%A) Else Echo=%%A:%%B)>game.sii 

Сноска: Изменение сохраненных настроек игры обман.

+0

Этот код не работает корректно с моим файлом – Whater

+0

Мой код не хуже, чем информация, которую вы предоставили. Если у вас есть «чистый» файл с линией, начинающейся с 'time_upper_limit:', она заменит эту целую строку 'time_upper_limit: 9999999'. Ваш исходный код выполняет замену строки, этот код выполняет замену строки. Если первое работает, а не последнее, я бы предположил, что предоставленная вами информация отсутствует. Если вы считаете, что мой код ошибочен, сообщите мне, что с ним не так, если результат или он работает неправильно, то отладка невозможна без дополнительной информации. – Compo

+0

BTW, после просмотра вашего файла 'game.sii', я обновил свой код соответствующим образом. Я был прав, что вашей информации не хватало. Линия, которую вы искали, должна была начинаться с одного пробела. – Compo

0

Я попытался изменить строку этот код и перезаписать файл

set findtext="time_upper_limit: " 
set replace=time_upper_limit: 9999999" 
set findfile="game.sii" 
findstr %findtext% %findfile% 

game.sii

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