新生活!引っ越してから困らないように注意すべきことは?>>

VBScriptで指定行に文字列を挿入したいと思っていますが可能でしょうか?
例:)2行目に挿入
前    後
1    1
2    挿入列
3    2
     3

先頭から呼んでいき WriteLineを… と思ったのですが、最後尾に追加でした^_^;
で、新規ファイルに順に呼んで(前)を削除、(後)をリネーム。と考えたのですが、スマートではありません。
なにかよいメソッドはあるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

'----------- ファイルシステムオブジェクト作成


Set objFso = CreateObject("Scripting.FileSystemobject")

'----------- 定数の作成
Const ForReading = 1                                  '読取フラグ
Const ForWriting = 2                                   '書込フラグ
Const ForAppending = 8                                 '追記フラグ

Const InsertLine = 2                                   '文字列の挿入行
Const InsertText = "Inserted!"                             '挿入する文字列

Const strPath = "test.txt"                               '処理するテキストファイルのパス

'----------- ファイルが存在することを確認
If objFso.FileExists(strPath) = False Then
MsgBox "指定のファイルがみつかりません"
WScript.Quit                                      'なければ終了
End If

'----------- テキストの行数を確認
Set objRead = objFso.OpenTextFile(strPath , ForReading)            '読取モードでテキストを開く
objRead.ReadAll                                      '全部読むことで最終行へ移動
intLine = objRead.Line                                  '現在の行数を確認
objRead.Close                                       '読取モード閉じる

'----------- テキストの挿入
If intLine <= InsertLine Then                              '挿入行がテキストの行数より大きいか、同じの場合

  Set objAppending = objFso.OpenTextFile(strPath , ForAppending)      '追記モードでテキストを開く
  objAppending.WriteLine InsertText                         '挿入行の追記
  objAppending.Close                                  '追記モード閉じる

Else                                             '挿入行がテキストの行数より小さい場合

  Dim WritingText                                    '書込用の文字列(省略可)
  Set objRead2 = objFso.OpenTextFile(strPath , ForReading)          '読取モードでテキストを開く
  i = 1                                           '行数の確認用の数値
  Do Until objRead2.AtEndOfStream = True                    '終了行まで繰り返し
    If i = InsertLine Then                               '挿入行が来たら、文字列を挿入
      WritingText = WritingText & InsertText & vbCrLf            'vbCrLfは改行コード
    End If

    WritingText = WritingText & objRead2.ReadLine & vbCrLf        '1行読み取り、書込用の文字列に追加
    i = i + 1                                       '読み取った行数を1増やす
  Loop

  objRead2.Close                                    '読取モード閉じる

  Set objWriting = objFso.OpenTextFile(strPath , ForWriting)          '書込モードでテキストを開く
  objWriting.Write WritingText                             '書込用の文字列値を一気に書込み
  objWriting.Close                                    '書込モード閉じる

End If

'----------- 完了メッセージ
MsgBox "挿入完了"




見やすくするため全角スペースを入れてあります。
    • good
    • 0

1.新規ファイルに元ファイルから指定行の前までコピー


2.指定行に挿入
3.元ファイルの残りをコピー

こんなのでどうでしょう?
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qvbsでテキストファイル内の文字列検索

初心者です。

テキストファイルを指定し、含まれる文字列を検索し、
結果表示したいと考えております。

色々探して、以下で作成したのですが、
うまく動いてくれません。

出来ましたら、テキストファイルの中の文字列の
一部分を指定して動作させたいと思っております。

どなたかご教示のほど宜しくお願い致します。


----------------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim strSearchWord

Set tmpFile = WSHFso.OpenTextFile("C:\AAA.txt")

Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
strSearchWord = strSearchWord & tmpLine & vbcrlf
Loop


Dim SearchWord
SearchWord = split(strSearchWord," ")


if InStr(SearchWord(ix), "test")<>0 then
WScript.Echo " testを含みます。"
else
WScript.Echo " testを含みません。"

end if


----------------------------------------------------

初心者です。

テキストファイルを指定し、含まれる文字列を検索し、
結果表示したいと考えております。

色々探して、以下で作成したのですが、
うまく動いてくれません。

出来ましたら、テキストファイルの中の文字列の
一部分を指定して動作させたいと思っております。

どなたかご教示のほど宜しくお願い致します。


----------------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell...続きを読む

Aベストアンサー

こんにちは。

コードの細かい部分の目的としている部分は良く分からないけれども、少し直してみました。あくまでも、VBSです。元のコードは、ちょっと違うようです。

'-------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
'Set WshShell = CreateObject("WScript.Shell") '??
Dim strSearchWord
dim i
'-------------------------------------------
Public Const FileName ="C:\AAA.txt"
Public Const sWord =""test"
'-------------------------------------------
Set tmpFile = WSHFso.OpenTextFile(FileName)

Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
i = i + 1
nflg= fSearchWord (tmpLine)
If nflg Then Exit Do
Loop
If nflg Then
MsgBox i & "行目に" & sWord &"を含みます。",64
Else
MsgBox sWord &"を含みませんでした。",48
End If
'-------------------------------------------
Function fSearchWord(tmpLine)
Dim flg
SearchWord = Split(tmpLine," ")
For ix = LBound(SearchWord) To UBound(SearchWord)
If Len(Trim(SearchWord(ix))) > 0 Then
If InStr(1, SearchWord(ix), sWord, 1) > 0 Then
flg = True
Exit For
End If
End If
Next
fSearchWord = flg
End Function
'-------------------------------------------

こんにちは。

コードの細かい部分の目的としている部分は良く分からないけれども、少し直してみました。あくまでも、VBSです。元のコードは、ちょっと違うようです。

'-------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
'Set WshShell = CreateObject("WScript.Shell") '??
Dim strSearchWord
dim i
'-------------------------------------------
Public Const FileName ="C:\AAA.txt"
Public Const sWord =""test"
'---------------------...続きを読む

QVBSでエクセル内の行数を取得する方法

VBS初心者です。よろしくお願い致します。

VBSでエクセル内のデータの行数を取得する方法を教えて下さい。

セル1 セル2 セル3 セル4
123   234   875   ads
あい  うえ  458   444

上記がエクセルの内容だとしたら、3行という結果が欲しいのです。

どうぞよろしくお願い致します。

Aベストアンサー

>自分でエクセル内のデータを1行にして再度実行すると、値はやはり4と返してきます
書式か何か残ってるんじゃないでしょうか

>objExcel.Visible = false
true にして実行してみると判るかと思いますが、
エクセルを非表示するという設定を(明示的に)しています。

QVBScriptでCSVファイルを読み出したい

現在VBScriptでCSVファイルを1行ずつ読み取って、2次元配列に格納するプログラムを作成しています。
CSVファイルの中身は、サンプルで
shop,price,sales
001,500,700
003,1200,90
024,,18 という並びになっています。
実データは300件くらいです。
1行目のヘッダーを読み飛ばし、2行目のデータから1行ずつ読取、","でsplitを用いてまず1次配列に格納しています。
1次元配列のarrLine(0)=001、(1)=500、(2)=700と入ったデータを
2次元配列arrshopに順次保存?したいのです。
----------------------------------------------
dim strLine '1行ずつ読込んだデータを持つ
dim ntLineNum '行数のカウント
dim arrLine '","で区切った要素を持つ一次元配列
dim arrshop '一次元配列になった要素を2次元配列として格納

Do until .AtEndOfStream
  strLine = .ReadLine
  if 0<>strComp("",Trim(strLine)) then
ntLineNum = intLineNum + 1
  end if
  arrLine = split(strLine , ",")
  arrshop = Array(arrLines,i)
i = i + 1
loop
-----------------------------------------
msgbox arrshop(2)(0) と指定すると「003」出るようにしたいです。
Array関数が上手くないような気もします・・・。
どなたかご教授お願いします(>_<。)

現在VBScriptでCSVファイルを1行ずつ読み取って、2次元配列に格納するプログラムを作成しています。
CSVファイルの中身は、サンプルで
shop,price,sales
001,500,700
003,1200,90
024,,18 という並びになっています。
実データは300件くらいです。
1行目のヘッダーを読み飛ばし、2行目のデータから1行ずつ読取、","でsplitを用いてまず1次配列に格納しています。
1次元配列のarrLine(0)=001、(1)=500、(2)=700と入ったデータを
2次元配列arrshopに順次保存?したいのです。
--------------------------...続きを読む

Aベストアンサー

Arrayのところがおかしいですね。

動くか検証してないですが…
arrshop = Array(arrLines,i)
の代わりに
Redim Preserve arrshop(i+1)
arrshop(i)=arrLines
でやってみてください。
それと最初にiは0か1にでも初期化してから使う事をお勧めします。

Qbatファイル処理でのテキストファイルの内容を編集

batファイル処理のみにてテキストファイルの内容を編集する事は可能でしょうか。

例えば
aaa=0
bbb=0
ccc=0
ddd=0

という内容のテキストファイルが存在し、batファイルにて
aaa=0
bbb=1
ccc=1
ddd=0

というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。

宜しくお願いします。

Aベストアンサー

こんな感じですか?
パスは適切に設定してください
----- a.bat -----
cd c:\foo\bar
if exist test.bak goto skip
copy test.ini test.bak
cscript a:\hogehoge\replace.vbs test.ini
:skip
----- a.bat ここまで -----

----- replace.vbs -----
Const ForReading = 1
Const ForWriting = 2

strFileName = Wscript.Arguments(0)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)

strText = objFile.ReadAll
objFile.Close
strText = Replace(strText, "bbb=0", "bbb=1")
strText = Replace(strText, "ccc=0", "ccc=1")

Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.WriteLine strText
objFile.Close
----- replace.vbs ここまで -----

参考URL:http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/feb05/hey0208.mspx

こんな感じですか?
パスは適切に設定してください
----- a.bat -----
cd c:\foo\bar
if exist test.bak goto skip
copy test.ini test.bak
cscript a:\hogehoge\replace.vbs test.ini
:skip
----- a.bat ここまで -----

----- replace.vbs -----
Const ForReading = 1
Const ForWriting = 2

strFileName = Wscript.Arguments(0)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)

strText = objFile.ReadAll
obj...続きを読む

QWSHによるExcelのセルコピー&ペーストの方法

【やりたいこと】
WSHを利用して
1.あるExcelファイル(Aとする)を開く
2.別のExcelファイル(Bとする)を開く
3.Aの特定のシートの特定のセル範囲をコピー
4.Bの特定のシートに、3でコピーしたセル範囲をペースト
5.B上書き保存&閉じる
6.A閉じる

【現状】
以下のようなコードを書いてみたのですが、
ファイルの開閉はできますがコピー&ペーストが
全くできていないようです。
何が問題なのかよくわからず質問させていただきました。
かなり素人なので無駄も多いですが、ぜひご教授願います。
よろしくお願い致します。

-------------------------------------

Set xl1 = Wscript.CreateObject("Excel.Application")
xl1.Visible = false
Set book1 = xl1.WorkBooks.Open(A)
Set mysheet1 = book1.worksheets(特定のシート)

Set xl2 = Wscript.CreateObject("Excel.Application")
xl2.Visible = false
Set book2 = xl2.WorkBooks.Open(B)
Set mysheet2 = book2.worksheets(特定のシート)

mysheet1.Activate
xl1.Range("A1").CurrentRegion.Select
xl1.Selection.Copy

mysheet2.Activate
xl2.Range("A1").Select
xl2.Selection.Pastespecial

'ファイルクローズ
book2.Close false
xl2.Quit

set mysheet2 = Nothing
set book2 = Nothing
Set xl2 = Nothing

book1.Close false
xl1.Quit

set mysheet1 = Nothing
set book1 = Nothing
Set xl1 = Nothing
--------------------------------

【やりたいこと】
WSHを利用して
1.あるExcelファイル(Aとする)を開く
2.別のExcelファイル(Bとする)を開く
3.Aの特定のシートの特定のセル範囲をコピー
4.Bの特定のシートに、3でコピーしたセル範囲をペースト
5.B上書き保存&閉じる
6.A閉じる

【現状】
以下のようなコードを書いてみたのですが、
ファイルの開閉はできますがコピー&ペーストが
全くできていないようです。
何が問題なのかよくわからず質問させていただきました。
かなり素人なので無駄も多いですが、ぜひご教授願います。
...続きを読む

Aベストアンサー

>Set xl1 = Wscript.CreateObject("Excel.Application")
>Set xl2 = Wscript.CreateObject("Excel.Application")
これだとExcelのインスタンスが2つできてしまいます。
2ブックを開くのにExcelを2つ立ち上げる必要はありません。
Set xl1 = Wscript.CreateObject("Excel.Application")
xl1.Visible = false
Set book1 = xl1.WorkBooks.Open(A)
Set mysheet1 = book1.worksheets(特定のシート)
Set book2 = xl1.WorkBooks.Open(B)
Set mysheet2 = book2.worksheets(特定のシート)


で良いはずです。

QVBスクリプトでテキストファイルの行数カウント

VBスクリプトでテキストファイルの行数をカウントする
サンプルソースを探しています。
どなたかご存知の方、教えて下さい。

Aベストアンサー

#1 さんの回答も同様なのですが、ズバリなサンプルを探さずに、少しご自分で解いてみてはどうでしょうか?
覚えると簡単ですよ。

VBScript なら他に、
1) FileSystemObject オブジェクトを生成。
2) (1) の OpenTextFile メソッドでテキストファイルを TextStream として開く。
3) (2) で生成された TextStream オブジェクトの ReadAll メソッドでファイルの中身を一気に読み込む。
4) (3) で読み込んだ中身を、改行コードを区切り文字として VBScript の Split 関数で配列を生成。
5) VBScript の UBound 関数を使い、(4) で生成された配列の添え字の最大値を取得する。
6) (4) で生成された配列の添え字は 0 から始まっているので、(5) の結果に 1 を足す。

てなやり方でも取得できますね。

ReadAll メソッド
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/jsprotype.asp
Split 関数
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/jsprotype.asp
UBound 関数
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/jsprotype.asp

#1 さんの回答も同様なのですが、ズバリなサンプルを探さずに、少しご自分で解いてみてはどうでしょうか?
覚えると簡単ですよ。

VBScript なら他に、
1) FileSystemObject オブジェクトを生成。
2) (1) の OpenTextFile メソッドでテキストファイルを TextStream として開く。
3) (2) で生成された TextStream オブジェクトの ReadAll メソッドでファイルの中身を一気に読み込む。
4) (3) で読み込んだ中身を、改行コードを区切り文字として VBScript の Split 関数で配列を生成。
5) VBScript の UBoun...続きを読む

Qvbsで最後の行を削除する

csvファイル(test.csv)からフラグが1のものを抽出するのですが
最終行に改行がはってしまうので、最終行を削除してcsvファイルを保存したいのですが、
うまくいきません。ご教授ください。

Dim objADO
Dim i
Dim wsql
Dim rs
Dim wHeader
Dim wData
Dim objFSO
Dim objFile

Set objADO = CreateObject('ADODb.connection')

objADO.Open "Driver={Microsoft Text Driver (*.txt;*csv)};"&_
"DBQ=C:\test;"&_
"ReadOnly=1"
'抽出条件
wsql="select * from test.csv where フラグ='1'"

Set rs =objADO.Execute(Wsql)

'ヘッダ部
wHeader='ID,商品名,商品番号,フラグ"

'データ部
wData=""
Do While rs.EOF=False
For i = 0 to rs.fields.count - 1
if i = (rs.fields.count -1) then
wData = wData & chr(34) & rs.Fields.ltem(i) & chr(34) & chr(13)
else
wData = wData & chr(34) & rs.Fields.ltem(i) & chr(34) & ","

end if
next
rs.MoveNext
loop

'最終改行削除?
rs = Left(wData,Len(wData) - Len(chr(13)))

'ファイル出力
set objFSO = createObject("Scripting.FileSystemObject")
set objFile = objFSO.OpentextFile("c:\test\test.csv",2, true)

if err.Number = 0 then
objFile.WriteLine(wHeader)
objFile.WriteLine(wData)
objFile.close
end if

set objFile = Nothing
set objFSO = Nothing
set objADO = Nothing

******************************************
ID,商品名,商品番号,フラグ
100,パソコン,100-12,1
200,ペン,200-11,1
***ここの改行を削除する*****
〔EOF〕

csvファイル(test.csv)からフラグが1のものを抽出するのですが
最終行に改行がはってしまうので、最終行を削除してcsvファイルを保存したいのですが、
うまくいきません。ご教授ください。

Dim objADO
Dim i
Dim wsql
Dim rs
Dim wHeader
Dim wData
Dim objFSO
Dim objFile

Set objADO = CreateObject('ADODb.connection')

objADO.Open "Driver={Microsoft Text Driver (*.txt;*csv)};"&_
"DBQ=C:\test;"&_
"ReadOnly=1"
'抽出条件
wsql="select * fr...続きを読む

Aベストアンサー

'最終改行削除?
wData = Left(wData,Len(wData) - 1)

ではないかな?

QVBS実行時エラー オブジェクトがありません 回避方法について

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだとは思うのですが、何が原因かがわからなく。。

○エラーメッセージ
エラー:オブジェクトがありません。:'objIE.Document.getElementByName(...)(...)'
コード:800A01A8
ソース:Microsoft VBScript 実行時エラー

○コード
'Option Explicit

Dim tmp 'CSV格納
Dim tmp2 'CSV分割
Dim SiteArray(10) 'ID,PW,URL格納
Dim SiteURL 'URL格納
Dim SiteID 'ID格納
Dim SitePW 'PW格納

Dim i
dim objFSO
dim stmCsvFile

'URL,ID,PWをCSVより読込
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set stmCsvFile = objFSO.OpenTextFile("C:\Users\***\Desktop\login.csv")

Do Until stmCsvFile.AtEndOfLine = True
tmp = stmCsvFile.readline
tmp2 = Split(tmp, ",")
SiteArray(i) = tmp2(1)
i = i + 1
Loop

stmcsvfile.Close


'URL,ID,PWを格納
SiteID = SiteArray(1)
SitePW = SiteArray(2)
SiteURL = SiteArray(0)

'---------- ひらく

Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate SiteURL
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'---------- ID/PASSの入力

objIE.Document.getElementsByName("username")(0).Value = SiteID
objIE.Document.getElementsByName("password")(0).Value = SitePW

'---------- SUBMIT

objIE.Document.getElementsByName("login_form")(0).Submit
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'----------

宜しくお願い致します。

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだ...続きを読む

Aベストアンサー

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるかどうかさえ確認できませんよね。
その辺りはどうなんでしょうか?それで、Length プロパティを調べるように書いたわけです。

ふつう、例えば、ここの「教えて!goo」なんかでも、IDとパスワードは、きちんと、[ID(uname, pass)]を持っています。そしてIDには、添字は存在しません。

VBAがあれば、VBEditorのローカルウィンドウで、そのプロパティを確認していただくしかないと思います。もしかしたら、最初からとれていないのかもしれません。

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるか...続きを読む

QEXCEL VBAでテキストファイルの特定の場所にデータを書き込む方法

エクセルVBAのテキスト操作について質問なのですが、以下のようなテキストファイルがあったとしてKey1とKey2の間にデータを書き込みたいのですがどのようにすれば宜しいでしょうか。
宜しくお願い致します。

--- test.txt ここから ---
aaaa
bbbb
Key1
cccc
(ここにデータを書き込みたいです。)
Key2
eeee
--- test.txt ここまで ---

Aベストアンサー

だいたいこんな感じ
-------------------
'ファイルの中から指定した文字列が出現後、指定した文字列の前に行を挿入する
Dim fso, file
Dim tempFile, outFile, readFile
Dim strLine, Flag, fileName, key1, key2, addStr

fileName = "test.txt" 'オリジナルファイル名
key1 = "Key1" 'キーの初め
key2 = "Key2" '挿入場所キー
addStr = "DDDD" '挿入データ

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
tempFile = fso.GetTempName
Set outFile = fso.OpenTextFile(tempFile, 2, true) '作業ファイルを作る
Set readFile = fso.OpenTextFile(fileName, 1)
Flag = false
Do until readFile.AtEndOfStream
strLine = readFile.ReadLine '一行読み出し
if key1 = strLine then 'key1 があった
Flag = true
end if
if Flag and key2 = strLine then 'key2 があった
outFile.WriteLine(addStr) 'key2 の前に一行追加
end if
outFile.WriteLine(strLine)
loop
readFile.Close
outFile.Close
'元ファイルを.bakにする
Set file=fso.GetFile(fileName)
file.Name = fileName & ".bak"
'作業ファイルの名前を付け替える
Set file=fso.GetFile(tempFile)
file.Name = fileName

だいたいこんな感じ
-------------------
'ファイルの中から指定した文字列が出現後、指定した文字列の前に行を挿入する
Dim fso, file
Dim tempFile, outFile, readFile
Dim strLine, Flag, fileName, key1, key2, addStr

fileName = "test.txt" 'オリジナルファイル名
key1 = "Key1" 'キーの初め
key2 = "Key2" '挿入場所キー
addStr = "DDDD" '挿入データ

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
tempFile = fso.GetTempName
Set outFile = fso.OpenTextFile(tempFile,...続きを読む

QVBScriptで、ファイルから任意の行のみ取り出す方法について

VBScriptにて、あるファイル内を1行ずつ順番に取り出しながら、
途中の数行を別のファイルに書き出したいのですが、方法が分からず
悩んでいます。

--------------------------------------------------------------
set objFS = CreateObject("Scripting.FileSystemObject")
set objReadText = objFS.OpenTextFile("C:\read.log")
set objWriteText = objFS.CreateTextFile("C:\write.log")

count = 1
Do Until objReadText.AtEndOfStream

If count >3 And count < 8 Then

strLine = objReadText.ReadLIne
objWriteText.WriteLine(strLine)
ElseIf count = 8 Then
Exit Do
End If

count = count + 1
Loop

objReadText.Close
objWriteText.Close
--------------------------------------------------------------

上記にて、例えばread.logの4行目から7行目だけをwrite.logに書き出したいのですが、
想定した途中の行だけを別ファイルに書き出す事が出来ません。
どなたかアドバイスを頂けないでしょうか。

VBScriptにて、あるファイル内を1行ずつ順番に取り出しながら、
途中の数行を別のファイルに書き出したいのですが、方法が分からず
悩んでいます。

--------------------------------------------------------------
set objFS = CreateObject("Scripting.FileSystemObject")
set objReadText = objFS.OpenTextFile("C:\read.log")
set objWriteText = objFS.CreateTextFile("C:\write.log")

count = 1
Do Until objReadText.AtEndOfStream

If count >3 And count < 8 Then

strLine = objR...続きを読む

Aベストアンサー

set objFS = CreateObject("Scripting.FileSystemObject")
set objReadText = objFS.OpenTextFile("C:\read.log")
set objWriteText = objFS.CreateTextFile("C:\write.log")

count = 0
Do Until objReadText.AtEndOfStream
 strLine = objReadText.ReadLIne
 count = count + 1
 
 If count >3 And count < 8 Then
  objWriteText.WriteLine(strLine)
 End If
 If count = 8 Then
  Exit Do
 End If

Loop

objReadText.Close
objWriteText.Close


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング