VBScriptで、
「あるファイルを開き、ある文字列が書かれていれば何もしない、
書かれていなければその文字列を追記する」
という要件があったのですが、
800A0036「ファイルのモードが不正です」
800A003E「ファイルの最期を超えた入力を行おうとしました」
などのエラーが頻発。
テキストストリームオブジェクトの
AtEndOfStream
ReadAll
などは「読み取りモード」でないと動作せず、
Write
WriteLine
メソッドなどは書き込みモードでないと動作しないことが原因でした。
Dim fs Set fs = WScript.CreateObject("Scripting.FileSystemObject") Dim ts Set ts = fs.OpenTextFile(FilePath,1,True) 'いったん読み取りで開く Dim filebody If ts.AtEndOfStream Then filebody = "" Else filebody = ts.ReadAll End If ts.Close Set ts = fs.OpenTextFile(FilePath,8,True) '書き込みで開き直す '---------------何か書き込むコード-------------- ts.Close Set ts = fs.OpenTextFile(FilePath,1,True) '再度読み取りで開く '---------------書き込み結果を処理(メール送信など)するコード-------------- ts.Close Set fs = Nothing
なかなか煩わしいですね・・・。
FileSystemObjectに関する詳細は こちら
0 件のコメント:
コメントを投稿