0

以下で説明する機能は、Batch Windows Scripting を使用して実現できますか? もしそうなら、どうすればコードを編集してこの機能を実行できますか?

ファイルから複数行の文字列を削除しようとしています。複数行の文字列は別のファイルから取得され、バッチ変数に読み込まれます。次に、ターゲット ファイルを読み取り、この複数行の文字列を検索します。存在する場合は、ターゲット ファイルから削除します。

以下の私のコードは、ターゲット ファイルから複数行の文字列を削除できません。入力ファイルを正常に読み取ることができます。ファイルから複数行の文字列を検索して削除するスクリプトを編集するのを手伝ってくれませんか?

@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 ""
   }
}**
4

1 に答える 1

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
)
于 2013-05-01T01:08:38.110 に答える