初心者です。質問のレベルが低く申し訳ございません。
□やりたいこと
Samplehelpe.txtに記載された必要な情報を、日付を指定して、任意の文字列を
出力したいと考えています。
・日付の指定はinputBoxを利用して、代入
・必要な情報はDo While文を使用し、ReadLineで読み込んだ内容をobjOut.WriteLineにて書き出し
getlog.txt
2016/01/01: 取得した日
・/data/japan/tokyo
2016/01/01: 取得した日
ファイルサイズ: 1200バイトの空き領域
・/data/japan/osaka
2016/01/01: 取得した日
ファイルサイズ: 1100バイトの空き領域
このような情報がほしい
□現在の状況
getlog.txt
他の日付の情報も出力されてしまう。
2016/01/01: 取得した日
・/data/japan/tokyo
2016/01/01: 取得した日
ファイルサイズ: 1200バイトの空き領域
・/data/japan/osaka
2016/01/01: 取得した日
ファイルサイズ: 1100バイトの空き領域
(ここからの情報がいらない)
2 個のディレクトリ 600 バイトの空き領域
2 個のディレクトリ 1000 バイトの空き領域
(サンプルは2日のみだが、本番ではいらない日の情報が5000行表示されてしまう。)
以下が読み込む対象のテキストです。
samplehelp.txt
-------------------------- 2016/01/01 : 15:02:22.90 --------------------------
<文字列の羅列>
C:\japan\tokyo のディレクトリ(←抜き出したい情報)
<文字列の羅列>
2016/01/01(←抜き出したい情報) 15:01 100 JBtoBLD.RV.URIAGEDT
1 個のファイル 100 バイト
2 個のディレクトリ 1200 バイトの空き領域(←抜き出したい情報)
<文字列の羅列>
C:\japan\osaka のディレクトリ(←抜き出したい情報)
<文字列の羅列>
2016/01/01(←抜き出したい情報) 15:01 100 JBtoBLD.RV.URIAGEDT
1 個のファイル 100 バイト
2 個のディレクトリ 1100 バイトの空き領域(抜き出したい情報)
-------------------------- 2016/01/02 : 15:02:22.90 --------------------------
<文字列の羅列>
C:\japan\tokyo のディレクトリ
<文字列の羅列>
2016/01/02 15:01 200 JBtoBLD.RV.URIAGEDT
1 個のファイル 200 バイト
2 個のディレクトリ 600 バイトの空き領域
<文字列の羅列>
C:\japan\osaka のディレクトリ
<文字列の羅列>
2016/01/02 15:01 100 JBtoBLD.RV.URIAGEDT
1 個のファイル 100 バイト
2 個のディレクトリ 1000 バイトの空き領域
以下が作成中のプログラムです。
getlog_helpe.vbs
Option Explicit
' **********************************************************
' オブジェクト作成
' **********************************************************
Dim objFso:Set objFso = CreateObject("Scripting.FileSystemObject")
Dim objShell:Set objShell = WScript.CreateObject("WScript.Shell")
Dim szPath:szPath = WScript.ScriptFullName
szPath = objFso.GetParentFolderName(szPath)
Dim tokyo:tokyo = False
Dim osaka:osaka = False
Dim fso
Dim flDate:flDate = False
Dim szBuffer
Dim strDate
Dim dtmDate
' **********************************************************
' ファイルオープン
' **********************************************************
Dim objIn:Set objIn = objFso.OpenTextFile(szPath & "\putlog.txt", 1)
If Err.Number <> 0 then
MsgBox (Err.Description)
WScript.Quit
End If
Dim objOut:Set objOut = objFso.OpenTextFile(szPath & "\getlog.txt", 2, True)
' **********************************************************
' 日付の入力
' **********************************************************
strDate = InputBox("月日を入力してください。",2016/01/01)
If IsDate(strDate) Then
dtmDate = CDate(strDate)
Else MsgBox "正しい日付を入力してください。"
End If
msgBox dtmDate
' **********************************************************
'入力型式「YYYY/MM/DD」にて指定した日のみ書き出すテキスト
'取得データの「空き領域のバイト数値を書きだすテキスト
do While not objIn.AtEndOfStream
szBuffer = objIn.ReadLine'ReadLineにてputlog.textを一行ずつ読み込む
If InStr(szBuffer,dtmDate) <> 0 Then 'dtmDate(inputBoxにて入力した日付)があった場合、 objOut.WriteLine dtmDate&": 取得した日" '日付と": 取得した年月日"を書き出し End If If InStr(szBuffer, "C:\japan\tokyo のディレクトリ") <> 0 Then 'C:\japan\tokyo のディレクトリの文字列があった場合 tokyo = True objOut.WriteLine "" objOut.WriteLine " ・/data/japan/tokyo"'・/data/japan/tokyo"を書き出し 'MsgBox "tokyo" End If If InStr(szBuffer, "C:\japan\osaka のディレクトリ") <> 0 Then '"C:\japan\osaka のディレクトリ"の文字列があった場合 osaka = True objOut.WriteLine "" objOut.WriteLine " ・/data/japan/osaka"'・/data/japan/osakaを書き出し ' MsgBox "Kyorindo" End If If InStr(szBuffer, dtmDate) = (tokyo = True Or osaka = True) Then'tokyo及びosakaがTrueの場合 flDate = True'flDateをTrueにする ' MsgBox Date() End If ' ファイルサイズの取得 If flDate = True And InStr(szBuffer, "個のディレクトリ") <> 0 Then 'fiDateがTrue及び"個のディレクトリ"の文字列があった場合 objOut.WriteLine " ファイルサイズ:" & LTrim(Replace(szBuffer, "2 個のディレクトリ", ""))'この文字列を書き出し End If
loop
' **********************************************************
' ファイルクローズ
' **********************************************************
objOut.Close
objIn.Close
長くなり申し訳ございませんが、指定した日のみ、必要な情報をテキストに出力する
には、どのようにすればよろしいでしょうか。
ご教授いただきたく存じます。
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/18 01:02