2021年9月17日金曜日

VBS IO2 ファイルを読んで、文字列編集して出力する

 

*************************************

 入力データ log_kensu.txt

*****************************

 --------------------------------
1ICE805I 0 JOBNAME: AULOO   , STEPNAME: DUMMYC01
--------------------------------
--------------------------------
 ICE045I 0 RECORDS - IN: 12346, OUT: 56789
--------------------------------
--------------------------------
1ICE805I 0 JOBNAME: AULOO   , STEPNAME: DUMMYC02
--------------------------------
--------------------------------
 ICE045I 0 RECORDS - IN: 6, OUT: 9

 

*******************************
バッチ log_kensu.bat
*******************************

setlocal enabledelayedexpansion

@echo off
cls

echo %1
echo %~0
echo ---------------------------------------------
echo  ログファイルから件数箇所を出力します
echo ---------------------------------------------
echo;

SET /P ANSWER="実行します。よろしいですか (Y/N)?"

if /i {%ANSWER%}=={y} (goto :yes)
if /i {%ANSWER%}=={yes} (goto :yes)
EXIT

:yes
  IF EXIST %1_結果 DEL %1_結果

   cscript /nologo bin\log_kensu.vbs %1

endlocal

 

**************************************
log_kensu.vbs
**************************************

Option Explicit

Dim Args

Dim Cmd
Dim sName
Dim sArg1
Dim lPosStr
Dim iSW
Dim sLine

Dim sEditLine
Dim aryStrings

'--
Dim sJobName
Dim sJobNameT,sJobNameV
Dim sStepName
Dim sStepNameT,sStepNameV
'--
Dim sINName
Dim sINNameT,sINNameV
Dim sOUTName
Dim sOUTNameT,sOUTNameV

Dim fso
Dim iFile
Dim oFile

'----------------------------------------
Set Args = WScript.Arguments
If Args.Count < 1 Then
  WScript.Echo "ドラッグ&ドロップしてを実行。"
  WScript.Quit
End If

WScript.Echo Args.Count
sArg1 =  Wscript.Arguments(0)
WScript.Echo sArg1

Dim OUTFNAME
OUTFNAME = sArg1 & "_結果" & ".csv"

'----------------------------------------
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set iFile = fso.OpenTextFile(sArg1, 1, False, 0)
Set oFile = fso.OpenTextFile(OUTFNAME, 2, True)

iSW = 0

Do Until iFile.AtEndOfStream

  sLine = iFile.ReadLine

' ---------------------------------------
  lPosStr = InStr(1, sLine, "1ICE805I 0 JOBNAME:")
  If lPosStr > 0 Then

      sEditLine  =  trim(Mid(sLine, len("1ICE805I 0 ") ))

      aryStrings = Split(sEditLine, ",")
      sJobName   = trim(aryStrings(0))
      sStepName  = trim(aryStrings(1))

      aryStrings = Split(sJobName, ":")
      sJobNameT  = trim(aryStrings(0))
      sJobNameV  = trim(aryStrings(1))

      aryStrings = Split(sStepName, ":")
      sStepNameT = trim(aryStrings(0))
      sStepNameV = trim(aryStrings(1))

     iSW = 0

  End If

' ---------------------------------------
  lPosStr = InStr(1, sLine, "RECORDS - IN:")
  If lPosStr > 0 Then

     sEditLine  =  trim(Mid(sLine, len(" ICE045I 0 RECORDS - ") ))
     aryStrings = Split(sEditLine, ",")

     aryStrings = Split(sEditLine, ",")
     sINName    = trim(aryStrings(0))
     sOUTName   = trim(aryStrings(1))

     aryStrings = Split(sINName, ":")
     sINNameT   = trim(aryStrings(0))
     sINNameV   = trim(aryStrings(1))

     aryStrings = Split(sOUTName, ":")
     sOUTNameT  = trim(aryStrings(0))
     sOUTNameV  = trim(aryStrings(1))

     oFile.WriteLine sJobNameT  & "," & sJobNameV & "," & _
      sStepNameT & "," & sStepNameV & "," & _
      sINNameT  & "," & sINNameV & "," & _
      sOUTNameT & "," & sOUTNameV

     iSW = 1

  End If

Loop

'
iFile.Close
oFile.Close

 

******************************
出力データ log_kensu.txt_結果.csv
******************************

 JOBNAME,AULOO,STEPNAME,DUMMYC01,IN,12346,OUT,56789
JOBNAME,AULOO,STEPNAME,DUMMYC02,IN,6,OUT,9