BAT在线查找文字>替换所有行

时间:2017-02-11 13:36:42

标签: batch-file replace find line

我的蝙蝠有问题。

@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:"

2 个答案:

答案 0 :(得分:0)

我尝试更改此代码的行并覆盖文件

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

game.sii

答案 1 :(得分:-1)

我看不出你发布的脚本有什么问题会导致这种运行时间。 除非解密以某种方式与输入文件混淆

如果您不需要保留空行并且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

FootNote: 更改已保存的游戏设置是作弊。