VBScriptによるWSHを私の代わりに作成してください。


テキストファイルの1行目を読み込み(変数格納)、読み終わったら1行目は削除してテキストファイルを上書き保存してください。


 以下は処理前のテキストイメージ
====テキストの内容ここから=====
ほげほげ(1行目)
ぬるぽ(2行目)
ガッ(3行目)
====テキストの内容ここまで=====

 以下は処理実行後のテキストイメージ
====テキストの内容ここから=====
ぬるぽ(2行目)
ガッ(3行目)
====テキストの内容ここまで=====

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/05/09 10:40:14
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント100pt

ファイルの先頭行を削除するだけで良いのでしょうか?

以下、サンプルです。ファイル名を引数で渡すようにしてみました。

Option Explicit

' File Name : RemoveTopLine.vbs
' Usage     : CScript RemoveTopLine.vbs /I:<Input File> [/O:<Output File>]
' Example   : CScript RemoveTopLine.vbs /I:hoge.txt 

Const ForReading = 1 
Const ForWriting = 2 

Call Main()

Sub Main()
    ' 入力パラメータのチェック
    If Not CheckParam( WScript.Arguments ) Then
        Call ShowHelp()
        Exit Sub
    End If
    
    ' 入力ファイル名、出力ファイル名を取得
    Dim strInFile
    strInFile = GetParamByName( WScript.Arguments, "I", "" )
    Dim strOutFile
    strOutFile = GetParamByName( WScript.Arguments, "O", strInFile )
    
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject") 

    Dim inFile
    Set inFile = fso.OpenTextFile( strInFile, ForReading ) 
    
    ' ファイルの内容を変数にすべて読み込み
    Dim strContents
    strContents = inFile.ReadAll 
    inFile.Close 
    
    ' ファイルの内容を配列に変換
    Dim arrLines
    arrLines = Split( strContents, vbCrLf ) 
    
    Dim outFile
    Set outFile = fso.OpenTextFile( strOutFile, ForWriting, True )
    ' 1行目を飛ばして出力ファイルに書き込み
    Dim i
    For i = 1 to UBound(arrLines)
        outFile.WriteLine arrLines(i) ' 指定行(i)を取得して書き込み
    Next 
    outFile.Close
End Sub

Function CheckParam( objArgs )
    Dim bResult
    bResult = True
    If Not objArgs.Named.Exists("I") Then
       bResult = False
    End If

    CheckParam = bResult
End Function

Sub ShowHelp()
    WScript.Echo "Usage : CScript RemoveTopLine.vbs /I:<Input File> [/O:<Output File>]"
End Sub

Function GetParamByName( objArgs, strName, strDefaultValue )
    Dim strResult
    If objArgs.Named.Exists( strName ) Then
        strResult = objArgs.Named.Item( strName )
    Else
        strResult = strDefaultValue
    End If
    GetParamByName = strResult
End Function
  • 参考情報
■ Hey, Scripting Guy! テキスト ファイルの最終行だけを削除する方法はありますか
http://www.microsoft.com/japan/technet/scriptcenter/resources/qa...
■ Hey, Scripting Guy! テキスト ファイルのすべての空白行を削除する方法はありますか
http://www.microsoft.com/japan/technet/scriptcenter/resources/qa...
id:hoge-comic

GOODです!

素敵です!

サブルーチンになってて最高です!

2008/05/09 10:39:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません