可以从文件中删除此类字符串

时间:2013-04-30 23:10:36

标签: windows batch-file

使用Batch Windows Scripting可以实现下面介绍的功能吗?如果是这样,我如何编辑我的代码来执行此功能?

我正在尝试从文件中删除多行字符串。多行字符串来自另一个文件,并被读入Batch变量。然后我读取目标文件并搜索这个多行字符串,如果它存在,我想从目标文件中删除它。

下面的代码无法从目标文件中删除多行字符串。它可以成功读取输入文件。 您能帮我编辑我的脚本以搜索和删除文件中的多行字符串吗?

@echo off &setlocal enabledelayedexpansion

Set replace=
Set target=
Set infile=usermenuTest1.4d
Set outfile=usermenuTest2.4d

Rem Read file and store all contents in string
for /f "delims=" %%i in (%infile%) do set "target=!target! %%i"
echo %target%

Rem Remove the target string from outfile
@echo off & setlocal enabledelayedexpansion
for /f "tokens=1,* delims=¶" %%A in ( 'type "%outfile%"') do SET "string=%%A"
SET "modified=!string:%target%=%replace%!"
(echo(%modified%)>> "%outfile%"

ECHO.
PAUSE
ENDLOCAL

基本上我希望我的脚本从文件中删除以下粗体(文本内部**)文本:

// abc

// def

// hij

**Menu "User" {
   Button "" {
      Walk_Right ""
   }
}**

1 个答案:

答案 0 :(得分:0)

试试这个:

@echo off & setlocal
Set "infile=usermenuTest1.4d"
Set "outfile=usermenuTest2.4d"
for /f "tokens=1*delims=:" %%i in ('^<"%infile%" findstr /n "^"') do (
    echo(%%j|findstr /lc:"Menu \"User\"" >nul && set /a counter=6
    set /a counter-=1
    setlocal enabledelayedexpansion
    if !counter! leq 0 (echo(%%j)>>"%outfile%"
    endlocal
)