- 締切済み
VBScript(vbs)での行の取得について
あるテキストの中に空行をはさんで文字列がある時に"ABCD"の文字列を含む場合はABCDを含むひとまとまりだけを取得したいのですがその方法について教えてください。 [テキスト] AAAA BBBB CCCC DDDD EEEE ABCD FFFF GGGG HHHH [取得したい部分] DDDD EEEE ABCD FFFF
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- argument
- ベストアンサー率63% (21/33)
はじめまして 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)
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)
WSH+VBScriptということでしょうか?方法だけで良いんですよね。 テキスト全体を1つの文字列として変数に読み込んで正規表現で抽出すればいいでしょう。