• 締切済み

VBScript(vbs)での行の取得について

あるテキストの中に空行をはさんで文字列がある時に"ABCD"の文字列を含む場合はABCDを含むひとまとまりだけを取得したいのですがその方法について教えてください。 [テキスト] AAAA BBBB CCCC DDDD EEEE ABCD FFFF GGGG HHHH [取得したい部分] DDDD EEEE ABCD FFFF

みんなの回答

  • argument
  • ベストアンサー率63% (21/33)
回答No.3

はじめまして nonono11 さん 簡単にロジック考えましょう。必要なのは最終的に動くこと。 パターン・繰り返しになること。ただそれだけです。 別段regexp(正規表現)を使えとも書いてませんしregexpの宣言をする行より短く結果を得られるでしょう さてでは回答を提示しましょう。 filepathは任意のテキストパスを指定してください。 filepath="c:\test.txt": Set otf = CreateObject("Scripting.FileSystemObject").OpenTextFile(filepath): textarray = split(otf.readall,vbcrlf & vbcrlf ): otf.Close for i = 0 to ubound(textarray) if instr(textarray(i),"ABCD") then getdata=getdata & textarray(i) & vbcrlf next wscript.echo getdata ファイルを開き(改行コード改行コード)で配列化あとはその配列分比較しながらforをまわすだけ。 以上。難しく説明しようと思ってもしようがない。今回の処理はこれだけ事足りるのです。難しく考える必要は全くもってこれっぽちもありません。 処理違い・補足・追加処理等必要でしたらいってください。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

dim sLile, sBuf dim FSO, oFile Set FSO = CreateObject("Scripting.FileSystemObject") Set oFile = FSO.OpenTextFile("ファイルパス", 1) sBuf = "" sLine = "" do while oFile.AtEndOfStream   sBuf = oFile.ReadLIne   if sBuf <> "" then     sLine = sLIne & sBuf & vbCrLf   elseif sLine<>"" then     if InStr(sLine, "ABCD")<>0 then       MsgBox sLine     end if     sLine = ""   end if Loop ' 未検査のラインがある場合 if sLine<>"" then   if InStr(sLine, "ABCD")<>0 then     MsgBox sLine   end if end if といった具合でしょう

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

WSH+VBScriptということでしょうか?方法だけで良いんですよね。 テキスト全体を1つの文字列として変数に読み込んで正規表現で抽出すればいいでしょう。

関連するQ&A

専門家に質問してみよう