#########################
入力 0_VTOC_DS一覧.txt
#########################
TEST.AA.J1.S1.TEST1 VOL01
TEST.AA.J2.S2.TEST2A VOL02 +
TEST.AA.J3.S3.TEST3AAA VOL003
TEST.AA.J4.S4.TEST4 VOL004+
TEST.AA.J1.S1.TEST1 1 2 3
TEST.AA.J2.S2.TEST2A 22 200 0
TEST.AA.J3.S3.TEST3AAA 333 30 33
TEST.AA.J4.S4.TEST4 4444 44 44
##########################
バッチ 0_VTOC_DS一覧.bat
##########################
setlocal enabledelayedexpansion
@echo off
cls
echo ---------------------------------------------
echo VTOC データセット一覧(VOLとサイズ)を出力
echo ---------------------------------------------
echo %1
echo %~0
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\1_VTOC_DS一覧分割.vbs %1
IF %errorlevel% neq 0 (
echo 異常終了 %errorlevel%
exit /b 8
)
rem pause
cscript /nologo bin\2_VTOC_DS一覧併合.vbs %1
IF %errorlevel% neq 0 (
echo 異常終了 %errorlevel%
exit /b 8
)
echo 正常終了 %errorlevel%
pause
exit /b 0
########################
結果_VTOC_DS一覧分割SIZ.csv
########################
TEST.AA.J1.S1.TEST1,1,2,3
TEST.AA.J2.S2.TEST2A,22,200,0
TEST.AA.J3.S3.TEST3AAA,333,30,33
TEST.AA.J4.S4.TEST4,4444,44,44
########################
結果_VTOC_DS一覧分割VOL.csv
########################
TEST.AA.J1.S1.TEST1,VOL01
TEST.AA.J2.S2.TEST2A,VOL02,+
TEST.AA.J3.S3.TEST3AAA,VOL003
TEST.AA.J4.S4.TEST4,VOL004,+########################
0_VTOC_DS一覧.txt_結果.csv
########################
VOL01,,TEST.AA.J1.S1.TEST1,1,2,3
VOL02,+,TEST.AA.J2.S2.TEST2A,22,200,0
VOL003,,TEST.AA.J3.S3.TEST3AAA,333,30,33
VOL004,+,TEST.AA.J4.S4.TEST4,4444,44,44
########################
1_VTOC_DS一覧分割.vbs
########################
Option Explicit
Dim fso
Dim iFile1
Dim oFile1
Dim oFile2
'----------------------------------------
Dim Args
Dim sArg1
Dim sLine
Dim sOutLine
Dim OUTFNAME1
Dim OUTFNAME2
Dim LINEKEY
Dim lPosStr
'----------------------------------------
Set Args = WScript.Arguments
If Args.Count < 1 Then
WScript.Echo "ドラッグ&ドロップしてを実行。"
WScript.Quit(1)
End If
'WScript.Echo Args.Count
sArg1 = Wscript.Arguments(0)
'OUTFNAME1 = sArg1 & "_結果VOL" & ".csv"
'OUTFNAME2 = sArg1 & "_結果SIZ" & ".csv"
'----------------------------------------
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
OUTFNAME1 = fso.getParentFolderName(WScript.ScriptFullName) & "\" & "結果_VTOC_DS一覧分割VOL" & ".csv"
OUTFNAME2 = fso.getParentFolderName(WScript.ScriptFullName) & "\" & "結果_VTOC_DS一覧分割SIZ" & ".csv"
Set iFile1 = fso.OpenTextFile(sArg1, 1, False, 0)
Set oFile1 = fso.OpenTextFile(OUTFNAME1, 2, True)
Set oFile2 = fso.OpenTextFile(OUTFNAME2, 2, True)
LINEKEY = "TEST."
'----------------------------------------
Do Until iFile1.AtEndOfStream
sLine = iFile1.ReadLine
' ---------------------------------------
lPosStr = InStr(1, sLine, LINEKEY)
If lPosStr > 0 Then
WScript.Echo sLine
If mid(sLine,40,1) <> " " Then
' ------------------------------------
' VOLUME 情報の時
' ------------------------------------
sLine = Replace(sLine, "+", " +")
sOutLine = OmmitSpaceAndCSV(trim(sLine))
oFile1.WriteLine sOutLine
Else
' ------------------------------------
' サイズ 情報の時
' ------------------------------------
sOutLine = OmmitSpaceAndCSV(trim(sLine))
oFile2.WriteLine sOutLine
End If
End If
Loop
'----------------------------------------
iFile1.Close
oFile1.Close
oFile2.Close
WScript.Quit(0) ' 終了する
'-------------------------------------------------
' 文字列操作:空白を詰めてカンマ区切りに編集する -
'-------------------------------------------------
Function OmmitSpaceAndCSV(p1)
Dim a
' 2文字以上の空白を空白1文字にする
While InStr(p1, " ")
p1 = Replace(p1, " ", " ")
Wend
' 空白区切りで配列保存
a=Split(p1," ")
OmmitSpaceAndCSV = Join(a, ",")
End Function
########################
2_VTOC_DS一覧併合.vbs
########################
Option Explicit
Dim fso
Dim iFile1
Dim iFile2
Dim oFile1
'----------------------------------------
Dim Args
Dim sArg1
Dim line1
Dim line2
Dim sOutLine
Dim INAME1
Dim INAME2
Dim sOName1
Dim i
Dim ilineNum
Dim aline1
Dim aline2
'----------------------------------------
Set Args = WScript.Arguments
If Args.Count < 1 Then
WScript.Echo "ドラッグ&ドロップしてを実行。"
WScript.Quit(1)
End If
'WScript.Echo Args.Count
sArg1 = Wscript.Arguments(0)
sOName1 = sArg1 & "_結果.csv"
'----------------------------------------
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
INAME1 = fso.getParentFolderName(WScript.ScriptFullName) & "\" & "結果_VTOC_DS一覧分割VOL" & ".csv"
INAME2 = fso.getParentFolderName(WScript.ScriptFullName) & "\" & "結果_VTOC_DS一覧分割SIZ" & ".csv"
Set iFile1 = fso.OpenTextFile(INAME1)
Set iFile2 = fso.OpenTextFile(INAME2)
Set oFile1 = fso.OpenTextFile(sOName1, 2, True)
'----------------------------------------
While iFile1.AtEndOfLine = False
ilineNum = iFile1.Line
line1 = iFile1.readLine
line2 = iFile2.readLine
aline1 = split(line1, ",")
aline2 = split(line2, ",")
'WScript.Echo ilineNum & ",[VOL ]," & line1
'WScript.Echo ilineNum & ",[SIZE]," & line2
sOutLine = ""
If aline1(0) = aline2(0) Then
'ボリューム名
sOutLine = sOutLine & aline1(1) & ","
'マルチボリューム識別
If UBound(aline1) >= 2 Then
sOutLine = sOutLine & aline1(2) & ","
Else
sOutLine = sOutLine & "" & ","
End if
'データセット名
sOutLine = sOutLine & aline1(0)
'サイズ属性の情報
For i=1 to UBound(aline2)
sOutLine = sOutLine & "," & aline2(i)
Next
WScript.Echo sOutLine
oFile1.WriteLine sOutLine
Else
WScript.Quit(8)
End If
Wend
'----------------------------------------
iFile1.close
iFile2.close
oFile1.close
WScript.Quit(0) ' 終了する