[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理特殊字符串替换

感谢各位朋友及时热情的给予回复并解决了该困扰我多日的问题!


===========================================
      浏览器主页扫描
===========================================
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
    Start Page REG_SZ about:blank
===========================================
      浏览器劫持扫描
===========================================
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\IEXPLORE.EXE\shell\open\command
    <没有名称> REG_SZ "C:\Program Files\Internet Explorer\iexplore.exe"
===========================================


这上面的代码是我用P处理获得的注册表,但<!> <REG.EXE> <VERSION 3.0> 这段看着比较不舒服,可否过滤掉呢?

我尝试用下面的代码过滤,貌似不能过滤好,需要多次过滤才有用。。。各位谁能帮忙实现下过滤呢?


@echo off
setlocal enabledelayedexpansion
for %%i in ("%TEMP%\145.TXT") do set file=%%~fi
echo.
set replaced= <!> <REG.EXE> <VERSION 3.0>
set all=
for /f "delims=" %%i in ('type "%file%"') do (
    set str=%%i
    set "str=!str:%replaced%=%all%!"
    echo !str!>>"%file%"_tmp.txt
)
copy "%file%" "%file%"_bak.txt >nul 2>nul
move "%file%"_tmp.txt "%file%"
start "" "%file%"


set replaced= <!> <REG.EXE> <VERSION 3.0>   这段代码只能每次填入一小段才能过滤的掉。。。

[ 本帖最后由 luckboy45 于 2009-11-22 12:25 编辑 ]
1

评分人数

    • batman: 感谢主动给标题标注[已解决]字样PB + 2
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

findstr /i /v "! REG.EXE VERSION 3.0" a.txt>b.txt
1

评分人数

***共同提高***

TOP

set "str=!str:* REG.EXE VERSION 3.0=!"
@echo off
setlocal enabledelayedexpansion
for %%i in ("%TEMP%\145.TXT") do set file=%%~fi
echo.
for /f "delims=" %%i in ('type "%file%"') do (
    set str=%%i
    set "str=!str:* REG.EXE VERSION 3.0=!"
    echo. !str!>>"%file%"_tmp.txt
)
copy "%file%" "%file%"_bak.txt >nul 2>nul
move "%file%"_tmp.txt "%file%"
start "" "%file%"

or:

    call set "str=%%str:! REG.EXE VERSION 3.0=%%"
@echo off
setlocal enabledelayedexpansion
for %%i in ("%TEMP%\145.TXT") do set file=%%~fi
echo.
for /f "delims=" %%i in ('type "%file%"') do (
    set str=%%i
    call set "str=%%str:! REG.EXE VERSION 3.0=%%"
    echo. !str!>>"%file%"_tmp.txt
)
copy "%file%" "%file%"_bak.txt >nul 2>nul
move "%file%"_tmp.txt "%file%"
start "" "%file%"

及生產145.TXT時就可用skip跳過

[ 本帖最后由 Taurus 于 2009-11-22 07:22 编辑 ]
1

评分人数

带内地用语或带里语的文章,在下读写总觉有点吃力;
如误解了各位意思的讲勿见怪   ^_^

TOP

完整匹配,免得误删
  1. findstr /ixvc:"! REG.EXE VERSION 3.0" a.txt
复制代码
1

评分人数

命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

直接濾掉
@echo off
for /f "skip=2 delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\IEXPLORE.EXE\shell\open\command"') do echo %%i
pause
1

评分人数

带内地用语或带里语的文章,在下读写总觉有点吃力;
如误解了各位意思的讲勿见怪   ^_^

TOP

如果三独立和固定的格式,用for的skip=4,或者用delims取消分隔符。
如果内容较多,使用findstr查询比较直接(搜索未匹配项)。
直接查找findstr,过滤skip、eol、delims、echo等等

TOP

感谢各楼兄弟的帮助,问题解决!~
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

返回列表