概要
前にも、ライブラリバックアップやりましたが、今度は、複数ライブラリをまとめて、って言うか、順番にバックアップ&ダウンロードします。
それに今回は BASP21 を使わずに(使えずに)、Windows におまけの ftp.exe を使ってます。
しかも、ダウンロードは別プロセス起動で、SAVF と平行して動くぞ!(^o^)
タイムアウトになったら、ログ見て、手動でフォローして下さい・・・。
登録:2009/01/24
前にも、ライブラリバックアップやりましたが、今度は、複数ライブラリをまとめて、って言うか、順番にバックアップ&ダウンロードします。
それに今回は BASP21 を使わずに(使えずに)、Windows におまけの ftp.exe を使ってます。
しかも、ダウンロードは別プロセス起動で、SAVF と平行して動くぞ!(^o^)
タイムアウトになったら、ログ見て、手動でフォローして下さい・・・。
登録:2009/01/24
このページに書かれている事を実行して、何が起こっても私は知りません。
まぁ、このページに到達された方なら大丈夫でしょうけど(^o^)。
スクリプト re971001.hta の固定値をご自分の環境に合わせて変更し、起動して下さい。
ログ保存フォルダに、色々残ります。ダウンロードが終わったら、自分で削除して下さい。
例によって、保管ジョブとFTPは別ジョブなので、保管ファイル作成ライブラリに QTEMP は使えません。
[re971001.hta:ここから]======================================================================
<html>
<head>
<HTA:APPLICATION
APPLICATIONNAME="ASライブラリFTPダウンロード"
ICON="wupdmgr.exe"
SCROLL="no"
ID="myHTA"
/>
<style type="text/css">
<!--
body,select,input,td {
font-family : monospace;
}
h1 {
margin-top : 0.0em;
padding-top : 0.3em;
padding-bottom : 0.2em;
margin-bottom : 0.5em;
padding-left : 1em;
color : #3333ff;
background-color : #99ffff;
font-size : 130%;
font-family : "DF平成明朝体W7","MS 明朝",monospace;
font-weight : normal;
}
p {
margin-top : 0 em;
padding-top : 0 em;
padding-bottom : 0 em;
margin-bottom : 0 em;
}
textarea.data_list {
font-family : monospace;
font-size : 150%;
}
textarea.log_list {
font-family : monospace;
}
input.pc_file {
width : 23em;
}
input.text {
font-family : monospace;
width : 8em;
}
-->
</style>
</head>
<body onload="onload_proc()">
<form id="form_main" onsubmit="">
<h1 id="page_title">対象AS</h1>
<table title="フォルダ名には、ブランクを含めないように!">
<tr>
<td>
<textarea class="data_list" name="member_lists" rows="14" cols="10">
PJ1DTA
PJ1PGM
PJ1SRC</textarea>
</td>
<td class="form_options">
<dl>
<dt>←保管するライブラリ名を、改行で区切って入れて下さい。</dt>
</dl>
<dl>
<dt>保管ファイル保存フォルダ(末尾の \ は無くても可)</dt>
<dd>
<input class="pc_file" name="data_dir" value="C:\FTP_Download\SAVF" />
</dd>
<dt>ログ保存フォルダ(末尾の \ は無くても可)</dt>
<dd>
<input class="pc_file" name="log_dir" value="C:\FTP_Download\log" />
</dd>
<dd>
スクリプト実行ログ・FTP送信スクリプト・FTP実行ログが保存されます。
ログは追加、FTP送信スクリプトは上書きされます。
</dd>
<dt>対象AS</dt>
<dd>
<select name="AS_SYSTEM" size="1" >
<option value="192.168.100.101" selected>AS1号機</option>
<option value="192.168.100.102" >AS2号機</option>
</select>
</dd>
<dt>ユーザーID/パスワード</dt>
<dd>
<input class="text" name="AS_UID" value="" />
/<input class="text" name="AS_PWD" value="" type="password"/>
</dd>
<dt>保管オプション</dt>
<dd>
<input id="SAV_DTACPR" type="checkbox"><label for="SAV_DTACPR">DTACPR(*HIGH)</label>
<input id="SAV_ACCPTH" type="checkbox"><label for="SAV_ACCPTH">ACCPTH(*YES)</label>
TGTRLS <select name="SAV_TGTRLS" size="1" >
<option value="*CURRENT" selected>*CURRENT</option>
<option value="V5R4M0" >V5R4M0</option>
<option value="V5R3M0" >V5R3M0</option>
<option value="V5R2M0" >V5R2M0</option>
<option value="V5R1M0" >V5R1M0</option>
</select>
<dd>
</dd>
<dt>保管ファイル作成ライブラリ名</dt>
<dd>
<input class="text" name="AS_lib_to" value="QGPL" />
</dd>
</dl>
<dl>
<dt><input type=button onclick="S_Download()" value="ダウンロード" /></dt>
</dl>
</td>
</tr>
</table>
</form>
<script language="VBScript">
option explicit
Const C_title_text = "ASライブラリFTPダウンロード"
'接続初期値
Const C_Default_AS = "192.168.100.101"
Const C_Default_user = "USER"
Const C_Default_pass = "PASS"
Const C_window_width = 650
Const C_window_height = 490
Const C_lib_FTP_DL_log_file_name = "AS_Lib_FTP_DL.log"
dim rt,i
dim G_AS400,G_AS_CMD
dim G_fso,G_write_file
dim G_log_file_name
'--------------------------------------------------------------------------------
'ライブラリダウンロード
Sub S_Download()
dim LA_member,L_member
'1.AS/400接続
'2.ライブラリ単位のループ処理
'3.終了処理
Err.clear
'1.AS/400接続
Set G_AS400 = createobject("cwbx.AS400System")
G_AS400.define document.all("AS_SYSTEM").value
G_AS400.UserID = document.all("AS_UID").value
G_AS400.Password = document.all("AS_PWD").value
Set G_AS_CMD = createobject("cwbx.Command")
Set G_AS_CMD.system = G_AS400
'ログファイルのオープン
G_log_file_name = trim(document.all("log_dir").value) & "\" & C_lib_FTP_DL_log_file_name
Set G_fso = CreateObject("Scripting.FileSystemObject")
Set G_write_file = G_fso.OpenTextFile(G_log_file_name,8,true)
'2.ライブラリ単位のループ処理
LA_member = Split(document.all("member_lists").value,vbcrlf)
for i = 0 to UBound(LA_member) 'それぞれのメンバー毎の処理
L_member = trim(LA_member(i))
if L_member <> "" then 'ブランク行は無視で。
'ライブラリ単位の処理
Call S_Download_by_LIB(L_member)
end if
If Err.Number <> 0 Then
exit for
end if
next
'ログファイルのクローズ
G_write_file.Close
Set G_fso = nothing
Set G_AS_CMD = Nothing
Set G_AS400 = Nothing
On Error Goto 0
Call msgbox("おわりました。")
end sub
'--------------------------------------------------------------------------------
'ライブラリダウンロード
Sub S_Download_by_LIB(P_lib)
dim L_cmd_str
dim L_log_file_name
dim L_FTP_script_file,L_FTP_script_file_name
dim L_Shell,L_FTP_str
'1.DLTF QGPL/TargetLIB
'2.CRTSAVF QGPL/TargetLIB
'3.SAVLIB TargetLIB *SAVF SAVF(QGPL/TargetLIB) SAVACT(*LIB)
' DTACPR(*HIGH)
'4.FTPスクリプト作成
'1.get 〜
'2.DLTF QGPL/TargetLIB
'5.ftp.exe 起動
On Error Resume Next
'1.DLTF QGPL/TargetLIB
L_cmd_str = "DLTF " & document.all("AS_lib_to").value & "/" & P_lib
Call S_add_result(L_cmd_str)
G_AS_CMD.run L_cmd_str
'こけても無視
If Err = -2147467259 Then Err.Clear
'2.CRTSAVF QGPL/TargetLIB
L_cmd_str = "CRTSAVF " & document.all("AS_lib_to").value & "/" & P_lib
Call S_add_result(L_cmd_str)
G_AS_CMD.run L_cmd_str
If Err.Number <> 0 Then
Call S_add_result(Err.Description) '結果メッセージの表示
exit sub
end if
'3.SAVLIB TargetLIB *SAVF SAVF(QGPL/TargetLIB) SAVACT(*LIB)
' DTACPR(*HIGH)
L_cmd_str = "SAVLIB " & P_lib & " *SAVF SAVF("
L_cmd_str = L_cmd_str & document.all("AS_lib_to").value & "/" & P_lib & ")"
L_cmd_str = L_cmd_str & " SAVACT(*LIB)"
L_cmd_str = L_cmd_str & " TGTRLS(" & document.all("SAV_TGTRLS").value & ")"
if document.all("SAV_DTACPR").checked then
L_cmd_str = L_cmd_str & " DTACPR(*HIGH)"
end if
if document.all("SAV_ACCPTH").checked then
L_cmd_str = L_cmd_str & " ACCPTH(*YES)"
end if
Call S_add_result(L_cmd_str)
G_AS_CMD.run L_cmd_str
If Err.Number <> 0 Then
Call S_add_result(Err.Description) '結果メッセージの表示
exit sub
end if
'4.FTPスクリプト作成
'ファイル名:
'TargetLIB.ftp
'内容
'OPEN 192.168.100.101
'F
'F
'bin
'get QGPL/TargetLIB (フォルダ)
'quote rcmd DLTF QGPL/TargetLIB
'bye
' L_FTP_script_file_name = mid(myHTA.commandLine,2,InstrRev(myHTA.commandLine, "\", -1, 1)-1) & P_lib & ".ftp"
L_FTP_script_file_name = trim(document.all("log_dir").value) & "\" & P_lib & ".ftp"
Set L_FTP_script_file = G_fso.OpenTextFile(L_FTP_script_file_name,2,true)
L_FTP_script_file.WriteLine "open " & document.all("AS_SYSTEM").value
L_FTP_script_file.WriteLine document.all("AS_UID").value
L_FTP_script_file.WriteLine document.all("AS_PWD").value
L_FTP_script_file.WriteLine "bin"
L_FTP_script_file.WriteLine "get " & document.all("AS_lib_to").value & "/" & P_lib & " """ & document.all("data_dir").value & "\\" & P_lib & """"
L_FTP_script_file.WriteLine "quote rcmd DLTF " & document.all("AS_lib_to").value & "/" & P_lib
L_FTP_script_file.WriteLine "bye"
L_FTP_script_file.Close
'5.ftp.exe 非同期呼び出し
set L_Shell = CreateObject("WScript.Shell")
L_FTP_str = "cmd.exe /C ftp.exe -s:" & L_FTP_script_file_name & " >> " & trim(document.all("log_dir").value) & "\" & P_lib & ".log"
Call S_add_result(L_FTP_str) '結果メッセージの表示
L_Shell.run L_FTP_str,,false
set L_Shell = nothing
On Error Goto 0
end sub
'--------------------------------------------------------------------------------
'結果ログの追加
sub S_add_result(P_msg)
dim L_time,L_time_text
'※FSOと書込ファイルのオープンクローズは、外でやってます。
L_time = time
L_time_text = right("00" & datepart("h",L_time),2) & ":" & right("00" & datepart("n",L_time),2) & ":" & right("00" & datepart("s",L_time),2)
G_write_file.WriteLine L_time_text & " " & P_msg
end sub
'--------------------------------------------------------------------------------
sub onload_proc()
document.title = C_title_text
document.all("page_title").innerText = C_title_text
rt = window.resizeTo(C_window_width,C_window_height)
'初期値設定
document.all("AS_SYSTEM").value = C_Default_AS
document.all("AS_UID").value = C_Default_user
document.all("AS_PWD").value = C_Default_pass
end sub
'--------------------------------------------------------------------------------
</script>
</body></html>
[re971001.hta:ここまで]======================================================================