概要
前にも、ライブラリバックアップやりましたが、今度は、複数ライブラリをまとめて、って言うか、順番にバックアップ&ダウンロードします。
それに今回は 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:ここまで]======================================================================