Update:2017/04/28-01:39:00

バッチ処理サンプル(その4)「IEでバッチのGUI」

インターネットエクスプローラーをバッチで使う

バッチ処理では苦手となるキーボード入力をインターネットエクスプローラーのフォームを利用してGUI風にしてみます。
たいした処理はしていませんが、何かの参考や役に立てば幸いです。
※Windows 9x/meでは利用できません。ご了承ください。

IEのフォームから入力されたデータをバッチに送ります。

バッチとVBS、IEの複合技です。
バッチから起動したVBSでInternetExplorer(インターネットエクスプローラー:以下「IE」と表示)のフォームを表示し入力されたデータをバッチに返します。
通常、バッチでは入力しにくい複数行の文字データや選択入力、ファイル名の取得をIEのフォーム画面を利用して簡易GUI(グラフィカルユーザーインターフェイス:グーイ)のように使ってみます。
フォーム上のデータは javascript で操作可能ですので、入力のチェックなども比較的容易に追加できるでしょう。
通常業務でこんな面倒な入力を伴うバッチ処理が必要かどうか分かりませんが、定型パターンとして知っておくと便利なことがあるかもしれません。

ページトップへ戻る

バッチファイル

ファイル名「ie.bat」
@REM
@ECHO OFF
IF NOT "%~9" == "" GOTO MSG
IF "%~1" == "/?" GOTO MSG
IF "%~1" == "/h" GOTO MSG
IF "%~1" == "/help" GOTO MSG

REM 環境変数に改行を含む複数の行を格納するための準備
SETLOCAL ENABLEDELAYEDEXPANSION
REM SETコマンド下の2行の空行は改行文字を設定するための指定の一部です。消してはいけません。
SET LF=^


REM フォームを呼び出すVBSを起動して入力されたフォームのデータを取り込みます。
FOR /F "tokens=1 delims=" %%F IN ('cscript //NoLogo ie.vbs') DO set %%F&ECHO %%F
EXIT /B

:MSG
ECHO このBAT処理は、ie.vbs、form.htmlとあわせて使用します。
ECHO BATからvbsを中継してieのフォームを呼び出し、入力データを取得するサンプルです。
ECHO (このバッチ処理はWindowsXPで動作を確認しました。)
ECHO 使い方
ECHO %~nx0 [/?|/h|/help]
ECHO    パラメーター:/?、/h、/help を指定すると、この画面を表示します。
ECHO.
EXIT /B

ページトップへ戻る

VBS

ファイル名「ie.vbs」
Option Explicit

Dim objIE ' IE オブジェクト
Dim objFLD ' FILEシステム オブジェクト
Dim chk ' 「OK」の値を記録しておく変数
Dim par(100) ' フォームから読み取るデータを格納する配列変数
Dim CRLF ' 改行文字を格納しておく変数
CRLF = Chr(13) & Chr(10) ' 改行文字の設定

' ieオブジェクトの作成
Set objIE = WScript.CreateObject("InternetExplorer.Application")
If Err.Number = 0 Then
   ' ieのウインドーサイズと可視化(見える)の設定を行います。
   objIE.width = 320 ' 横幅(ピクセル)
   objIE.height = 480 ' 縦高(ピクセル)
   objIE.Visible = True
   ' カレントフォルダー(ie.vbsが起動されたフォルダー)の取得
   Set objFLD = CreateObject("Scripting.FileSystemObject").GetFolder(".")
   ' 標準では、カレントフォルダーの「form.html」を表示します。
   objIE.Navigate objFLD.Path & "\" & "form.html"
   Set objFLD = Nothing
   chk = GetOK()
   ' 「B1」ボタンがクリックされるのを待ちます。
   Do While (chk = GetOK()) : WScript.sleep (200) : Loop
Else
   ' ieオブジェクトの作成に失敗した時のエラー処理
   WScript.Echo "エラー:" & Err.Description
   WScript.Quit
End If

' ここからフォームに入力されたデータを取り出して、バッチ処理に送信します。
' objIE.document.frm.項目名.value でデータを取り出します。
' 項目名は name="項目名" で指定した名前です。
' iRepExG関数では、textarea から入力された複数行の文字データ中にある改行文字を「!LF!」に変換します。
par(0) = "v[1]=" & objIE.document.frm.txt.value
par(0) = iRepExG (par(0), CRLF, "!LF!") ' CRLF(改行)を「!LF!」に変換(バッチ側で改行文字に再変換されます。)
par(1) = "v[2]=" & objIE.document.frm.sel.value
par(2) = "v[3]=" & Chr(34) & objIE.document.frm.fil.value & Chr(34) ' Chr(34) ->「"」を表します。
WScript.echo par(0) ' par(0)をバッチ処理へ送信
WScript.echo par(1) ' par(1)をバッチ処理へ送信
WScript.echo par(2) ' par(2)をバッチ処理へ送信
' ここまででデータの入力とバッチへの送信処理は終わりです。
objIE.Quit
Set objIE = Nothing

WScript.Quit

'================================================================================
' 項目名「OK」の値を取得する関数
' 項目「OK」は「B1」ボタンがクリックされるたびに、
' フォーム内のjavascriput「add_one」関数で1ずつ
' カウントアップされていきます。
' この「OK」の値が変化していれば「B1」ボタンが
' クリックされたことが分かります。
Function GetOK()
   Dim lngNum   ' 項目OKに格納されている数字を取り出す変数
   On Error Resume Next
   lngNum = objIE.document.ok_button.ok.value
   On Error Goto 0
   GetOK = lngNum
End Function

' 原稿文字列を正規文字列で検索し、一致する文字をすべて置換文字列に置き換えます。
' regSource : 原稿文字列
' regPattern : 正規文字列
' regTarget : 置換文字列
Function iRepExG ( regSource, regPattern, regTarget )
   Dim regExpression, Matches ' 変数を作成します。
   Set regExpression = New RegExp ' 正規表現を作成します。
   regExpression.Pattern = regPattern ' パターンを設定します。
   regExpression.IgnoreCase = True ' 大文字と小文字を区別しないように設定します。
   regExpression.Global = True ' 見つかったすべての文字列を置換するように設定します。
   iRepExG = regExpression.Replace(regSource , regTarget) ' 置換を実行します。
End Function

ページトップへ戻る

HTML

ファイル名「form.html」
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS;">

<title>

</title>
<script type='text/javascript' language='JavaScript'>
<!--
function add_one() {
document.ok_button.ok.value += 1;
}
//-->
</script>
</head>
<body>
<form name="frm">
<!-- ここからデータ入力用の項目を設定します。 -->
テキスト:<textarea name="txt" cols="32" rows="6">文章を入力します。</textarea><br>
選択入力:<select name="sel">
<option value="" selected>下から選んでください</option>
<option value="apple">りんご</option>
<option value="orange">みかん</option>
<option value="grape">ぶどう</option>
</select><br>
ファイル:<input type="file" name="fil" value="ファイルを選んでください。"><br>
<!-- ここまでにデータ入力用の項目を設定します。 -->
</form>
<form name="ok_button">
<input type="button" name="B1" value="OK" onclick="add_one();">
<input type="hidden" name="ok" value="0">
</form>
</body>
</html>

ページトップへ戻る

【ページ内見出し】
【サイト内リンク】
−広告エリア−
【パソコンと周辺機器のお店】

【工具と道具、測定器の販売】

【3Dプリンタ・ロボット部品の販売】

【夜食にどうぞ】


 



元のページに戻る  ページを閉じる

連絡先:お問い合わせフォーム