←
▼
▲
Sub Assert( Condition as boolean )
条件が満たされているかをチェックします。
満たされていなければ、Fail を呼び出します。
If not Condition Then Fail とほぼ同じですが(違いは下記)、正しい条件文を記述する
ことになるので、ソースの可読性があがります。
また、If 文を使わないので、マルチステートメント(1行に複数の文)が記述できます。
g_debug の設定にかかわらず常にチェックします。
Public Property Let VarA(x) : Assert x >= 0 : VarA = x : End Property
サンプル:
(src)
If Condition と If not Condition は、完全に反対の関係ではありません。
たとえば、If 4 と If not 4 は、どちらも真です。
完全に反対の関係は次のように複数行になります。
If Condition Then
Else
***
End If
よって、正しい条件文を記述することは If Then Fail より Assert の方が簡単になります。
x >= 0
関連
テストが失敗したことを、ユーザーやテストスクリプトに知らせます。
新規にエラーを発生させます。
←
▼
▲
Sub AssertExist( Path as string )
ファイルまたはフォルダが存在するかどうかをチェックします。
AssertExist "settings.txt"
サンプル:
→ vbslib.vbs
存在しなければ、エラーメッセージの中にファイルのパスが含まれます。
このため、デバッガを起動しなくてもユーザーが対応できる可能性が高まります。
エラーコードは、E_PathNotFound になります。
逆に、AssertExist では、存在するときにエラーにすることはできません。
"settings.txt"
エラーメッセージのサンプル:
<ERROR msg="ファイルまたはフォルダが見つかりません" path="C:\Folder\setting.txt"/>
→ T_File.vbs
テスト
関連
参考
Test.vbs で共通のファイルの存在チェック
ソース
T_AssertExist_UNC
T_AssertExist
→ T_FileMutex_Manually.vbs
大文字小文字が異なると、echo_v 関数で警告を表示しますが、継続します。
<WARNING msg="大文字小文字が異なります" call="C:\file.txt" name="C:\File.txt"/>
→ 大文字小文字に統一することの副作用
←
▼
▲
(src)
Sub AssertFC( Path1 as string, Path2 as string )
2つのテキストファイルを比較して、異なれば diff ツールを開きます。
テキストファイルの文字コードが自動判定できるなら、文字コードが異なっても
テキストが同じであれば、同じと判定します。
文字コードが異なれば必ず異なると判定するときは、
参考
Path2 のファイルの内容に、% を使った文字列変換関数を使うことができます。
を使ってください。
テスト
c.RightHasPercentFunction or c.ErrorIfNotSame のケース
大文字と小文字を区別しません。
←
▼
▲
→ T_Value.vbs # [T_AssertValue]
Sub AssertValue( Name as string, TestValue as variant, PassValue as variant,
CompareOption as interger )
値が範囲内であるかどうかをチェックし、範囲外なら詳細なメッセージを付けてエラーにします。
【引数】
Name
TestValue
値の名前、エラーメッセージ用
チェック対象の値
PassValue
範囲
CompareOption
比較オプション
AssertValue "EqualNumber", a, 1, Empty
サンプル
a = 1 であるかチェックします。
テスト
AssertValue "Str", a, Array( "A", "ABC" ), c.CaseSensitive
a = "A" または a = "ABC" であるかチェックします。
AssertValue "RangeNumber", a, Array( 1, 3 ), c.Range
1 ≦ a ≦ 3 であるかチェックします。
ソース
→ vbslib.vbs
←
▼
▲
書きかけ
←
▼
▲
テキストファイルの中の相対パスをフル・パスに変換します。
←
▼
▲
参考
←
▼
▲
Visual Studio のソリューションをビルドします
Visual Studio のソリューションをクリーンします
Visual Studio のソリューションをリビルドします
関連
→ Module Mixer 3
VisualStudio.vbs
ファイル:
→ T_devenv フォルダ
テスト
Visual Studio 2005〜2010 を操作します。
←
▼
▲
Sub devenv_rebuild( SlnPath as string, ConfigName as string )
Dim ds_:Set ds_= new CurDirStack
pushd "src"
devenv_rebuild "sample.sln", "Release"
popd
【引数】
→ コマンドライン・コンパイル
(src)
devenv_rebuild "src\sample_%devenv_ver_name%.sln", "Debug"
Visual Studio のソリューションをリビルドします。
SlnPath
ConfigName
ソリューション・ファイルのパス(.sln)
設定名("Release"など)
ソリューション・ファイルに書かれたバージョン情報を元に、
コンパイラのバージョンを自動的に選択します。
ビルドに失敗したら、E_BuildFail エラーになります。
参考
devenv_rebuild "sample.sln", "Release|x64"
Release|x64 が使えるかどうかは、.sln ファイルをテキストファイル
で開いて、そのコンフィグがあるかどうかで判断してください。
テスト
→ T_devenv.vbs # [T_devenv_build]
→ T_devenv.vbs # [T_devenv_build_MultiFolder]
ソース
→ VisualStudio.vbs
サンプル
←
▼
▲
Sub devenv_build( SlnPath as string, ConfigName as string )
Visual Studio のソリューションをビルドします。
(src)
参考
←
▼
▲
Dim ds_:Set ds_= new CurDirStack
pushd "src"
devenv_clean "sample.sln"
popd
Sub devenv_clean( SlnPath as string )
サンプル:
Visual Studio のソリューションをクリーンします。
【引数】
SlnPath
ソリューション・ファイルのパス(.sln)
(src)
参考
テスト
→ T_devenv.vbs # [T_devenv_build_MultiFolder]
←
▼
▲
Sub devenv_upgrade( SlnPath as string, Opt as Empty )
Dim ds_:Set ds_= new CurDirStack
pushd "src"
devenv_upgrade "sample.sln", Empty
popd
サンプル:
Visual Studio のソリューション・ファイルを新しい Visual Studio 用に変換します。
【引数】
SlnPath
古い Visual Studio のソリューション・ファイルのパス(.sln)
新しいバージョンとは、現在の PC にインストールされている Visual Studio のうち、
最も新しいバージョンのことです。
参考
Opt
Empty または、c.MakeBackup
Opt に、c.MakeBackup を指定すると、変換前のファイルのバックアップを作成します。
ただし、c は、get_VisualStudioConsts の返り値です。
(src)
←
▼
▲
Function get_VisualStudioConsts() as Object
VisualStudio.vbs で使う定数の集合。
サンプル:
Dim c : Set c = get_VisualStudioConsts()
'// c.MakeBackup
(src)
←
▼
▲
devenv_rebuild "src\sample_%devenv_ver_name%.sln", "Release"
devenv_rebuild, devenv_clean などに指定する .sln ファイルのパスには、
%devenv_ver_name% を指定することができます。
インストールされている Visual Studio に応じて、次の文字列に変換されます。
Visual Studio 2010 … "vs2010"
Visual Studio 2008 … "vs2008"
Visual Studio 2005 … "vs2005"
複数の Visual Studio がインストールされているときは、デフォルトでは最新のものが設定されますが、
PC の環境変数や、SetVar で devenv_ver_name を設定することで、バージョンを選択できます。
get_DevEnvObj
echo "Default: " + GetVar( "%devenv_ver_name%" )
GetVar や env で、devenv_ver_name 環境変数の値を取得するときは、その前に
get_DevEnvObj を実行してください。
(src)
テスト
→ devenv_ver_name 環境変数
関連
devenv_ver_name
←
▼
▲
Function IsVisualStudioInstalled( VersionNum as integer, IsExpress as boolean ) as boolean
【引数】
指定したバージョンの Visual Studio がインストールされているかどうかを返します。
VersionNum
バージョン番号
IsExpress
Express 版かどうか
(src)
インストールされているかどうか
返り値
←
▼
▲
Function GetVisualStudioVersionNum( VersionString as string ) as integer
Visual Studio のバージョン文字列(例:"vs2008")を数値(例:2008)に変換します。
(src)
←
▼
▲
Sub GetSlnFileVersion( SlnPath as string, out_VersionNum as integer,
out_IsExpress as boolean )
指定のソリューション・ファイルが使える Visual Studio のバージョンを返します。
【引数】
SlnPath
Visual Studio のソリューション・ファイルのパス(.sln)
out_VersionNum
(出力) バージョン番号。 2012, 2010, 2008, 2005
(src)
out_IsExpress
(出力) Express 版かどうか
←
▼
▲
Visual Studio の *.sln ファイルを読み込みます。
(src)
テスト
→ T_devenv.vbs # [T_devenv_SlnLoad]
してから
にアクセスしてください。
←
▼
▲
Sub VisualStudioSlnClass::Load( SlnFilePath as string )
Visual Studio の *.sln ファイルを読み込みます。
【引数】
SlnFilePath
*.sln ファイルのパス
(src)
←
▼
▲
Dim VisualStudioSlnClass::Projects as ArrayClass of VisualStudioSlnProjectClass
ソリューションの中にあるプロジェクトの一覧。
してからアクセスしてください。
←
▼
▲
Class VisualStudioSlnProjectClass
Public ProjectName '// as string
Public RelativePath '// as string
Public ProjectGuid '// as string
End Class
(src)
参考
←
▼
▲
Sub DeleteProjectInVisualStudioSln( SlnFilePath as string, ProjectNameh as string )
Visual Studio の *.sln ファイルの中にある1つのプロジェクトを削除します。
【引数】
SlnFilePath
ProjectNameh
*.sln ファイルのパス
削除するプロジェクトの名前
(src)
テスト
→ T_devenv.vbs # [T_devenv_DeleteProjectsInSln]
プロジェクトの名前は、
から参照できます。
←
▼
▲
→ レジストリ (VBS)
レジストリのサブキーを列挙します。
指定のレジストリ・キーに入っている値を列挙します。
レジストリ・キーの値を .reg ファイルに出力します。
ファイルをダブルクリックしたときに開くプログラムを設定します。
ファイルの右クリック・メニューの1つの項目を追加します。
レジストリにライトします。
指定のレジストリ・キーか値が存在するかどうかを判定します。
PC の電源を切ります。
レジストリからリードします。
関連
←
▼
▲
Sub Shutdown( Operation as string, CountDownTimeSec as integer )
PC の電源を切ります。
【引数】
Operation
CountDownTimeSec
電源の切り方(下記)
電源を切るまでの時間(秒)
(src)
RunProg "cscript main_child.vbs", ""
Shutdown Empty, Empty
Function Setting_getShutdownOperation()
Setting_getShutdownOperation = "PowerOff"
End Function
Function Setting_getShutdownCountDownTimeSec()
Setting_getShutdownCountDownTimeSec = 60
End Function
main_child が終了したらデフォルト設定で電源を切る。
30秒後にスリープする
Shutdown "Sleep", 30
デフォルト設定は、
に下記の関数の定義によって設定します。
関数定義がないときは、"PowerOff", 60 になります。
Shutdown 関数を呼び出すと、カウントダウンを始め、下記のウィンドウが開きます。
ただし、CountDownTimeSec = 0 のときは開きません。
テスト
Operation 引数
次のいずれかの文字列を指定できます。
"PowerOff", "Reboot", "Hibernate", "Sleep", "Standby"
[OK] を押せば、すぐに電源を切ります。
[キャンセル]を押すか、VBScript の
コンソールを閉じると、電源を切らなく
なります。
→ T_Shutdown_Manually.vbs
スリープするときは、scriptlib\vbslib_XXX\SetSuspendState フォルダが必要です。
Sleep と Standby は同じです。
Windows 8 タブレットのコネクテッド・スタンバイ には対応していません。
それぞれの OS のバージョンで行うこと
エラーが発生しても、電源を切るには、
RunProg などで、メイン処理を行う子プロセス
を起動して、子プロセスが終了する(RunProg から戻る)まで待ってから、Shutdown
を実行してください。 こうすれば、Ctrl-C や閉じるボタンが押されても電源が切れます。
通常 60秒後にシャットダウンします。
サンプル
音楽を鳴らしながら、60秒待ち、スリープする
g_CommandPrompt = 1 '// この行だけ SetupVbslibParameters に記述
Sub main()
Play "******.mp3"
Dim e ' as Err2
If TryStart(e) Then On Error Resume Next
Shutdown "Sleep", 60
If TryEnd Then On Error GoTo 0
e.Clear '// ユーザ・キャンセルしてもウィンドウを閉じるため
End Sub
このスクリプトを、Windows のタスクに登録しておくと、1時間ごとにスリープに入ることを
試みるようなことができます。
参考
Windows 7 では、地デジの予約録画などによる、
から、
Shutdown "Sleep" してもスリープ状態になりません。
wakeonlan <電源を入れるPCのMACアドレス>
まず、電源を入れる PC の準備をします。
/usr/bin/net rpc -S <マシン名> -U <アカウント名>%<パスワード> shutdown -t 10
<アカウント名> は、<ユーザ名> または <ドメイン名>\\<ユーザ名>
電源を落とすには、リモート・デスクトップ経由で、コマンドプロンプトから
を実行するか、無停電 Linux サーバー
から下記のコマンドを入力してください。
Windows XP の場合、
[ スタート > マイコンピューター ] を右クリック [ プロパティ > ハードウェア > デバイス
マネージャ ] から、ネットワーク アダプタの子ノードの中から該当するアダプタを
右クリック [ プロパティ ]、[ 詳細設定 > Wake Up Capabilities ] を [ Magic Packet ]、
[ 電源の管理 > このデバイスで、コンピュータのスタンバイ状態を解除できるように
する ] にチェックします。
PC の電源を切ってから、再度電源を入れてすぐに BIOS の設定画面を開き(機種
依存です。例:F2を押す)、Wake On LAN を有効にします(例:Power > Automatic
Power On > Wake on LAN = Primary)
『無停電の Linux サーバー』 にログインして、wakeonlan コマンドを実行します。
なお、MAC アドレスは、コマンドプロンプトから ipconfig /all を実行すると分かります。
./wakeonlan 11:22:33:44:55:66
例:
shutdown /s /f
を実行するか、
ソース
→ vbslib.vbs
→ SetSuspendState フォルダー
サンプル
サンプル
補足
←
▼
▲
IsScreenSaverRunning
(src)
Function IsScreenSaverRunning() as boolean
スクリーンセーバーが動いているかどうかを返します。
→ T_ScreenSaver_Manually.vbs # [T_IsScreenSaverRunning]
テスト
←
▼
▲
Sub RegEnumKeys( Path as string, out_Keys as array of string, Opt as integer )
レジストリのサブキーを列挙します。
【引数】
Path
out_Keys
レジストリのキーのパス
(出力) サブキーのフルパスの配列。 末尾に \ は無い
ファイル:
System.vbs
Dim keys
RegEnumKeys "HKEY_CURRENT_USER\Software\_Test", keys, Empty
'// keys(0) = "HKEY_CURRENT_USER\Software\_Test\Sub"
'// keys(1) = "HKEY_CURRENT_USER\Software\_Test\Sub2"
サンプル:
Opt
オプション。 Empty か F_SubFolder
(src)
サブキーが無いときは、UBound( out_Keys ) = -1 になります。
テスト
→ T_Reg.vbs # T_Reg1
Path の末尾に \ があってもなくても、キー(フォルダーのようなもの)を指定したことに
なります。
←
▼
▲
Sub RegEnumValues( Path as string, out_Values as array of RegValueName )
指定のレジストリ・キーに入っている値を列挙します。
【引数】
Path
out_Values
レジストリのキーのパス
(出力) 値と型名の配列
ファイル:
System.vbs
Class RegValueName
Public Name as string
Public Type_ as string
End Class
Dim values
RegEnumValues "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\" + _
"CurrentVersion\Setup", values
サンプル:
(src)
テスト
→ T_Reg.vbs # T_Reg1
Path の末尾に \ があってもなくても、キー(フォルダーのようなもの)を指定した
ことになります。