0

バッチ スクリプトで vbscript または Windows cmd.exe コマンド ラインを使用したいと考えています。

私の目標はこれです。

テキスト ファイル内の特定の文字、つまり "ST" が検出されると、ST の次のインスタンスが検出されるまで、文字 "ST" を検出した時点から始まるすべてのテキストが保存されます。「ST」の次のインスタンスが見つかった場合、ファイルを分割して、「ST」の最初のインスタンスから次の「ST」までのすべてのデータを含むファイル内の文字を保存する必要があります。もちろん、書き込む必要はありません。その最初のファイルの実際の文字 "ST" の 2 番目のインスタンス。「ST」の別のインスタンスが表示されない場合は、ファイルをそのままコピーして、たとえば new1.txt などの名前を付けます。ST のインスタンスが複数見つかった場合、各ファイルの名前は new1.txt、new2.txt、new3.txt、new4.txt などになります。

元。output.txt という名前のテキスト ファイルがあり、次の内容が含まれているとします。

ST 123 Abcrfg 78
ST !! 143 Bng 678 

次に、windows コマンド ラインの vbscript を使用して、output.txt というファイルを読み取り、次の操作を実行したいと思います...

データを含む new1.txt というファイルを作成します。

ST 123 Abcrfg 78

次に、new2.txt という名前で作成された別のファイルを確認したいと思います。

ST !! 143 Bng 678 

これに関するご支援をいただければ幸いです。

ありがとうございました。

4

1 に答える 1

0

単純化したアプローチは次のようになります。

Set fso = CreateObject("Scripting.FileSystemObject")

data = Split(fso.OpenTextFile("output.txt").ReadAll, "ST")
For i = 1 To UBound(data)
  fso.OpenTextFile("new" & i & ".txt", 2, True).Write "ST" & data(i)
Next

これにより、入力ファイル全体が読み取られ、「ST」が出現するたびにテキストが分割され、各フラグメントが個別のファイルに書き込まれます。最初のフラグメント ("ST" が最初に出現する前のテキスト) は無視されます。

これは小さなファイル (つまり、コンピュータの RAM に簡単に収まるファイル) にのみ適していることに注意してください。大きなファイルの場合は、ファイルを解析する必要があります。

于 2013-09-06T13:17:16.663 に答える