情報処理論実習 - 兵庫教育大学|hyogo ... · •ドリトル •ひまわり ......
TRANSCRIPT
情報処理論実習サンプルプログラムダウンロード先:
http://www.life.hyogo_u.ac.jp/ina/WSH/xxx.vbshttp://www.life.hyogo_u.ac.jp/ina/WSH/wsh.lzh
2006年度後期
2
スクリプト言語/マクロ言語いろいろ
日経ソフトウエア:「スクリプト言語まるごとブック」より
アプリ・マクロ•VBA•LotusScript•PlayRiteetc
ユニーク•Squeak•ドリトル•ひまわり/なでしこetc
汎用•Perl•Ruby•Pyson•Groovy•Awk•REXXetc
Web開発•JavaScript•PHP•Curletc
リスト処理•Lisp•Schemeetc
OS標準•WSH•AppleScript•バッチファイル•シェルスクリプトetc
ゲーム作成•HSP•吉里吉里/KAGetc
3
何をやるのか
DOS窓(コマンドプロンプト)の活用についてVBScriptの活用
WSH(Windows Scripting Host)
4
DOS窓(コンソール画面)の使い方
資料 dos_mado.doc 「DOS窓をもっと使おう」• 基本コマンド(helpコマンドで一覧と使い方が得られる)• バッチファイル(“バッチファイル入門”で検索してください)
1. @echo off2. date3. echo ファイル1:"%1"4. echo ファイル2:"%2"5. type %16. echo ほんとに実行してもいいですか?7. pause8. copy %1 %29. echo copy終了
• 標準入出力とリダイレクトdir > test.txt
filecopy.bat
使い方
c:¥>filecopy a.txt b.txt
5
VBScriptの使用場面
VBScript
WSH:バッチ処理の作成
InternetExplorer:HTML内のスクリプト記述
IIS(Webサーバ):ASPの作成
6
WSHとは
• Windows上でのさまざまな動作をスクリプト(VBScriptのプログラム)によってコントロールする仕組みを提供するもの
• スクリプトホストの種類– IE, IIS(Microsoft Internet Information Server)
• インタラクティブなWebページをHTML文書に組み込んで作成する
– WSH• Windowsデスクトップ上やMS-DOSプロンプトから直接実行できる。Windowsのバッチ処理と称される。
• 保存ファイルの拡張子は.vbs
7
VBScriptによる記述WScript.shellオブジェクトの利用
ノートパッドとペイントを起動するVBS (014_test1.vbs)• Dim WshShell• Set WshShell=CreateObject("WScript.Shell")• WshShell.run "NOTEPAD.EXE"• WshShell.run "MSPAINT.EXE“VBScriptプログラムの実行方法ダブルクリックまたは[ファイルを指定して実行]、dos窓ではc:¥>cscript test1.vbs または
c:¥>wscript test1.vbs
8
メッセージの表示
メッセージを画面に表示する 2種類(016_test.vbs)
• WScript.Echo ”おはようございます。”• MsgBox ”こんにちわ” & ”皆さん。”
文字や数字の連結には & を使う
コメントはremまたは’を使う
9
入出力命令、変数,配列
• メッセージボックス表示msgbox 019_mb1.vbs
• メッセージの改行vbCRで改行 023_mkg2.vbs
• 変数利用dim変数名 025_hs1.vbs,025_hs2.vbs
• 配列dim配列名(サイズ)
• 入力ボックス表示inputboxで文字入力 028_ib3.vbs書式:inputbox ”メッセージ”,”タイトル”,”規定データ”
10
四則演算と関数
• 四則演算の演算子+, -, *, / 037_ks3.vbs¥整数除算, Mod 余剰
• 関数– 端数処理 Int, Fix, Round
038_fc3.vbs,038_fc4.vbs– 文字処理 Left, Right, Mid, Rightb, Midb
040_mj1.vbs,040_mj2.vbs
11
練習(標準体重の表示)
• BMI指数の計算表示BMI=体重(Kg)÷身長(m)÷身長(m)
キーボード(InputBox)から身長と体重を読み、標準体重(Kg)を計算し、現在体重と標準体重を羅列表示(MsgBox)してください。標準体重のBMIは22です。
参考:HTMLの場合の例:bmi.html
12
実行順序の制御(条件分岐と繰返し)
• 分岐– if 条件式 then~end if 047_if1.vbs– if 条件式 then~else~end if 050_if2.vbs,052_if3.vbs条件式には不等号=, >, <, <=, >=, <>が使える
• 繰り返し– for~next 055_fn1.vbs– do while 条件式 ~ loop 059_dw1.vbs– do ~ loop while 条件式 060_dw2.vbs– 無限ループ Do ~Loop
• 強制終了– wscript.quit
13
アプリケーションのコントロール
• OLEオートメーション対応アプリが対象(手続き)• アプリのオブジェクトの取得(をしてから使う)
– set 変数=wscript.createobject(”アプリケーション名”)(例)set objEX=wscript.createobject(”excel.application”)
set wshshell=wscript.createobject(”wscript.shell”)• プロパティを使う
– objEX.visible=TRUE• メソッドを使う
– objEX.workbooks.add069_ex1.vbs
14
メッセージボックスの使い方
• MsgBoxの選択ボタン 073_km1.vbsmsgbox(“メッセージ”,ボタンの指定+表示記号の指定,“タイトル”) ボタンの指定 値 表示されるボタン
vbOK only 0 OKvbOK or vbOkCancel 1 OK,キャンセルvbAbortRetryIgnore 2 中止,再試行,無視vbYesNoCancel 3 はい,いいえ,キャンセルvbYesNo 4 はい,いいえvbRetryCancel 5 再試行,キャンセル表示記号の指定 値 表示される記号
+vbCritical 16 警告+vbQuestion 32 問合せ+vbExclamation 48 注意+vbInformation 64 情報
15
メッセージボックスからの戻り値
• MsgBoxからのリターン値 074_km2.vbsボタン 値 定数
OK 1 vbOKCancel キャンセル 2 vbCancel中止 3 vbAbort再試行 4 vbRetry無視 5 vbIgnoreはい 6 vbYesいいえ 7 vbNo
16
WshShellのPopUpメソッド3分岐以上SelectCase文
• WshShell.PopUp 077_pp2.vbs書式:WshShell.PopUp(”メッセージ”,時間の指定,”タイトル”,ボタンの指定)戻り値:MsgBoxと同じ
• 3通り以上分岐 Select~Case文079_sc1.vbsSelect Case 変数
Case 値1処理1
Case 値2処理2
Case 値3処理3
Case Else処理4
End Select
17
乱数の発生
’サイコロの目1から6の乱数の発生randomizeDo
n=int(rnd*6+1)MsgBox n
Loop
intは小数以下切捨て整数化関数
18
日付時刻の取得
• Date現在の日付を返す
• Time現在の時刻を返す
(使用例)
MsgBox ”今日は” & Date & ”で現在時刻は” & Time & ”です。”
19
演習:圧縮してメール添付で送付してください
「じゃんけんプログラム」を作成しようポイント•じゃんけんはループ処理で繰り返し行う•InputBoxからグー、チョキ、パーの入力•計算機側は乱数でグー、チョキ、パー出力•両者の手を見て結果をMsgBoxで表示•両者の累積勝敗数も表示する•日付時刻と勝敗結果をファイル[kekka.txt]に追記書き込みで蓄積できるようにする。→24枚目の「ファイル出力(オープンと書き出し)」を参考にしてください。
20
コレクションとFor eachループ
• コレクションとFor Each~Nextループ 082_fe1.vbs• コレクションとは、オブジェクト変数の集合体
[構文]for each 仮引数 in コレクション処理
next• ファイルシステムオブジェクトの取得
Set objFileSys = CreateObject("Scripting.FileSystemObject")• フォルダコレクションの取得
Set objFolder = objFileSys.GetFolder(InputPath)
21
実行時パラメータ(引数)の授受
• 引数の受け渡し方 087_hi1.vbs(使い方)087_hi1.vbs 10 20 30
• 引数のコレクション Wscript.Arguments• 配列への引数取り込み 088_hi2.vbs
(使い方)088_hi2.vbs one two three• 引数の個別授受
– Wscript.Arguments(n) 089_hi3.vbs
22
サブルーチン
サブルーチンの作り方
Sub サブルーチン名(引数1,引数2,…)処理
End Subサブルーチンの呼び出し方
call サブルーチン名(実引数1,実引数2,….)
091_sr1.vbs
23
関数
関数の作り方
Function 関数名(引数1,引数2,…)処理
[関数名=…….] ‘省略可能End Function関数の呼び出し方
変数=関数名(実引数1,実引数2,….)
093_fc1.vbs
24
ファイル出力(オープンと書き出し)
• ファイルへの書き込み 098_fw1.vbsファイルシステムオブジェクトの取得Set objFileSys = CreateObject("Scripting.FileSystemObject")
テキストファイルのオープンSet objFile = objFileSys.OpenTextFile(FileName,モード)
モード=2 上書き, モード=8 追加書きテキストファイルへの書き出し
objFile.Write ”文字列”objFile.WriteLine ”文字列”
テキストファイルのクローズobjFile.Close
25
ファイル入力(オープンと読み込み)
• ファイルからの読み出し 102_fr1.vbsファイルシステムオブジェクトの取得Set objFileSys = CreateObject("Scripting.FileSystemObject")
テキストファイルのオープンSet objFile = objFileSys.OpenTextFile(FileName,モード)
モード=1 読み込みテキストファイルからの読み出し
objFile.Readlineテキストファイルのクローズ
objFile.Close
26
プログラムサンプル• 起動メニュー 111_launch.vbs• 格言 114_kakugen.vbs• 環境変数一覧 127_showenv1.vbs• 環境変数一覧2 130_showenv2.vbs• 三つの扉 146_3taku.vbs• 二つの扉 151_2taku.vbs• イエス・ノークイズ 157_yesno.vbs• 入力速度測定 165_sokutei.vbs• 累計電卓 174_ruikei.vbs• 10進16進変換 179_conv1016.vbs• 10進数からの変換(184_oct_hex.vbs)• フォルダ内ファイル一覧 188_filelist.vbs
27
サンプル(ファイルのコピー:14_test2.vbs)1. myFolder=InputBox("フォルダを指定",,"c:¥")2. If myFolder="" Then WScript.Quit3. myExt=InputBox("コピーするファイルの拡張子",,"doc")4. If myExt="" Then WScript.Quit5. NewFolder=InputBox("コピー先フォルダ",,"c:¥new")6. If NewFolder="" Then WScript.Quit7. Set FS=CreateObject("Scripting.FileSystemObject")8. Set objFolder=FS.GetFolder(myFolder)9. On Error Resume Next10. FS.CreateFolder(newFolder)11. intExt=len(myExt)12. Call CpFile(objFolder)
13. Sub CpFile(objFolder)14. For Each myFile In objFolder.Files15. If Right(myFile.Name,intExt)=myExt Then16. FS.CopyFile myFile, newFolder & "¥"17. End If18. Next19. For Each objSubFolder In objFolder.SubFolders20. Call CpFile(objSubFolder)21. Next22. End Sub
28
まとめ、復習と発展
29
WSHのオブジェクトWSHの登録名とバージョン表示1. wscript.Echo wscript.name,"Version",wscript.versionWshShellオブジェクトの作成1. Set WshShell=CreateObject("Wscript.Shell")Excelオブジェクトの作成1. set objxl=wscript.createobject("excel.application")2. objxl.visible=true3. objxl.workbooks.addWshArgumentsオブジェクト(コマンドライン引数の参照)1. set objargs=WScript.Arguments2. Wscript.Echo objargs(1)
(コマンドライン引数の数を表示)
1. set objargs=WScript.Arguments2. Wscript.Echo objargs.count
30
WshShellオブジェクト特殊フォルダへのアクセス
• set wshshell=wscript.createobject("wscript.shell")• wscript.echo wshshell.specialfolders("templates")ポップアップと選択結果の値を表示
• set wshshell=wscript.createobject("wscript.shell")• yesno=wshshell.popup("このまま続けますか?",0,"確認",4)• wscript.echo yesnoメモ帳へのショートカット作成
• set wshshell=WScript.CreateObject("Wscript.Shell")• Set myShortcut=WshShell.CreateShortcut("メモ帳へのショートカッ
ト.lnk")• myShortcut.TargetPath="notepad"• myShortcut.IconLocation="notepad.exe,0"• myShortcut.Save()
31
基本操作
ダイアログボックスの表示と値取得(110_dialogbox.vbs)1. 'ダイアログボックスの表示と値の取得2. dim wshshell,poprt3. set wshshell=wscript.createobject("wscript.shell")
4. poprt=wshshell.popup("ボタンを押してください",0,"テスト",1+32)
5. if poprt=1 then6. wscript.echo "[OK]ボタンが押されました。"7. else8. wscript.echo "[キャンセル]ボタンが押されました。"9. end if
32
インプットボックスの表示と値の取得
1. ‘インプットボックスの表示と値の取得(114_inputbox1.vbs)2. dim intext3. intext=inputbox("文字を入力してください","テスト","ここに入力")4. wscript.echo intext
33
1. インプットボックスを使ったショートカットの作成(115_inputbox2.vbs)2. 'インプットボックスの表示と値の取得3. 'ショートカットの作成4. dim wshshell,scname,TP,IL,mydesktop,myshortcut
5. scname=inputbox("ショートカットの名前を入力入力してください。","ショートカットの作成","test.vbsへのショートカット")
6. if scname="" then wscript.quit
7. TP=inputbox("起動するファイルのパスを入力してください","ショートカットの作成","c:¥sample¥test.vbs")
8. if TP="" then wscript.quit
9. IL=inputbox("アイコンの保存場所を入力してください","ショートカットの作成","c:¥sample¥test.ico")
10. set wshshell=wscript.createobject("wscript.shell")
11. mydesktop=wshshell.specialfolders("desktop")12. set myshortcut=wshshell.createshortcut(mydesktop & "¥" & scname & ".lnk")13. myshortcut.targetpath=TP14. myshortcut.iconlocation=IL15. myshortcut.save
34
ショートカットを作る
1. ‘sampleショートカットとアイコンの作成(117_myshortcut.vbs)2. dim wshshell3. set wshshell=wscript.createobject("wscript.shell")4. dim myshortcut5. set
myshortcut=wshshell.createshortcut("c:¥windows¥temp¥test.vbsへのショートカット.lnk")
6. myshortcut.targetpath="c:¥sample¥test.vbs"7. myshortcut.iconlocation=“c:¥sample¥test.bmp“ ’サイズ45x458. myshortcut.save
メモ帳へのショートカットをデスクトップに作る(116_memo_shortcut.vbs)
35
Webページショートカットの作成
1. ‘Webページショートカットの作成(118_webshortcut.vbs)2. dim wshshell
3. set wshshell=wscript.createobject("wscript.shell")
4. dim desktop,myshortcut5. mydesktop=wshshell.specialfolders("desktop")6. set myshortcut=wshshell.createshortcut(mydesktop & "¥兵教大へ
のショートカット.url")7. myshortcut.targetpath="http://www.hyogo-u.ac.jp"8. myshortcut.save
36
右クリックメニューで「送る」に登録
1. ‘右クリックメニューで「送る」に登録(120_sendto.vbs)2. dim wshshell,mysendto,myshortcut
3. set wshshell=wscript.createobject("wscript.shell")
4. mysendto=wshshell.specialfolders("sendto")5. set myshortcut=wshshell.createshortcut(mysendto &
"¥メモ帳.lnk")6. myshortcut.targetpath="notepad"7. myshortcut.iconlocation="notepad.exe,0"8. myshortcut.save
37
Excel,Word,IEの機能呼び出し
38
1. ‘Excelの機能呼び出し(137_excel.vbs)2. dim myexcel3. set myexcel=wscript.createobject("excel.application")4. myexcel.visible=TRUE5. myexcel.workbooks.add
6. myexcel.caption="工程管理表"7. myexcel.columns(1).columnwidth=108. myexcel.columns(2).columnwidth=109. myexcel.columns(3).columnwidth=15
10. myexcel.cells(1,1).value="開始日"11. myexcel.cells(1,2).value="終了日"12. myexcel.cells(1,3).value="進行状況"
13. myexcel.range("A1:C1").select14. myexcel.selection.font.bold=TRUE15. myexcel.selection.font.colorindex=216. myexcel.selection.interior.colorindex=817. myexcel.selection.interior.pattern=1618. myexcel.cells(2,1).select
39
1. ‘Excel表の自動作成と終了(139_excel2.vbs)2. dim myfolder,svfolder,svname3. myfolder=inputbox("調べるフォルダ","フォルダの情報","c:¥windows¥temp")4. svfolder=inputbox("結果をセーブするフォルダ","フォルダの情報","c:¥sample")5. svname=inputbox("情報を書き出すファイル名","フォルダの情報","tempfolder")6. dim myexcel,mybook,FS,objfolder,objfile7. set myexcel=wscript.createobject("excel.application")8. myexcel.visible=TRUE9. set mybook=myexcel.workbooks.add10. set FS=createobject("scripting.filesystemobject")11. set objfolder=FS.getfolder(myfolder)12. myexcel.cells(1,1).columnwidth=1513. myexcel.cells(1,2).columnwidth=1814. myexcel.cells(1,3).columnwidth=3515. myexcel.cells(1,1).value="ファイル名"16. myexcel.cells(1,2).value="最終更新日"17. myexcel.cells(1,3).value="パス"18. myrows=219. for each objfile in objfolder.files20. myexcel.cells(myrows,1).value=objfile.name21. myexcel.cells(myrows,2).value=objfile.DateLastAccessed22. myexcel.cells(myrows,3).value=objfile.path23. myrows=myrows+124. myexcel.cells(myrows,1).select25. next26. mybook.saveas(svfolder & "¥" & svname & ".xls")27. myexcel.quit
40
Excel自動グラフ作成
1. ‘Excel自動グラフ作成(142_excel_graph.vbs)2. dim myexcel,mybook,mytitle,mychart
3. set myexcel=wscript.createobject("excel.application")4. set mybook=myexcel.workbooks.open("c:¥My Documents¥test.xls")
5. mytitle=myexcel.cells(1,1).value
6. myexcel.range("A2:D9").select7. set mychart=myexcel.charts.add()8. mychart.hastitle=TRUE9. mychart.charttitle.text=mytitle10. mychart.charttitle.font.size=1411. myexcel.visible=TRUE12. mychart.type=4
41
グラフの種類とtype番号• 面 1
• 横棒 2
• 縦棒 3
• 折れ線 4
• 円 5
• 3D横棒 -4096
• 3D縦棒 -4100
• 3D折れ線 -4101
• 3D円 -4102
• 3D等高線 -4103
• レーダー -4151
• ドーナツ -4120
42
スロットゲームを作って見よう
slot_test.vbs, slot.vbs
43
Wordの起動と書式設定(144_word.vbs)
IEの起動と操作(147_ie.vbs)
44
テキストの処理
新しいファイルの作成と操作(152_text.vbs)タイムスタンプ入りテキストの作成
(154_timestamp.vbs)報告書の書き込み(155_houkokusho.vbs)文字列の置換(157_mojichikan.vbs)
45
ファイルとフォルダの操作
フォルダとサブフォルダ(160_folder.vbs)ファイル一覧作成(162_filelist.vbs)指定ファイルのコピー(164_filecopy.vbs)ファイル名の一括変更
(166_file_rename.vbs)フォルダ内テキストの一括置換
(168_folder_text_replace.vbs)
46
データベースを操作(参考)
データベースへのアクセス(170_access_excel.vbs)
47
WordとExcelを組み合わせる
174_word_excel.vbs
48
自動的な処理(タスクスケジューラ)
1.コントロールパネルからタスクを開く
2.タスクの追加を開く
3.タスクウイザードに沿って設定
– 自動起動スクリプトの選択– 起動する日付単位を選択– IDとパスワードを入力– 実行する時間を設定