'----------- ファイルシステムオブジェクト作成 Set objFso = CreateObject("Scripting.FileSystemobject") '----------- 定数の作成 Const ForReading = 1 '読取フラグ Const ForWriting = 2 '書込フラグ Const ForAppending = 8 '追記フラグ '/*********** 書き換え必須エリア:開始 *********** Const InsertLine = 30 '文字列の挿入行 Const InsertText = "172.25.000.000 servername.host.com" '挿入する文字列 Const strPath = "C:\WINDOWS\system32\drivers\etc\hosts" '処理するテキストファイルのパス '/*********** 書き換え必須エリア:終了 *********** '----------- ファイルが存在することを確認 If objFso.FileExists(strPath) = False Then 'MsgBox "指定のファイルがみつかりません" WScript.Quit 9 'なければ終了 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 vbCrLf & InsertText & vbCrLf '挿入行の追記 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 "挿入完了" WScript.Quit 0