1.9.1 排他エラーリトライ機能
更新された直後のファイルやフォルダにアクセスすると,ディスクへの書き込み遅延の影響によって一時的な排他エラーが発生することがあります。排他エラーリトライ機能を有効にすると,ファイルやフォルダで排他エラーが発生した場合,コマンドによってファイルへのアクセスをリトライするため,スクリプトにリトライ処理を記述する必要がなくなります。
排他エラーリトライ機能は,排他が解除されるか,または排他エラー以外のエラーが発生するまで,設定されたリトライ回数およびリトライ待ち時間に従ってファイルやフォルダへのアクセスをリトライします。排他エラーリトライ機能の動作は,次のとおりです。
- リトライ中に排他が解除されて,ファイルやフォルダに正常にアクセスできた場合
-
リトライを終了して,コマンドやステートメントの実行を続行します。
- リトライ中に排他エラー以外のエラーが発生した場合
-
リトライを終了して,コマンドやステートメントの実行を排他エラー以外のエラーで終了します。
- リトライしても排他が解除されなかった場合
-
コマンドやステートメントの実行を排他エラーで終了します。
特定のコマンドを呼び出した場合だけリトライする場合は,SetRetryModeコマンドを使用してください。SetRetryModeコマンドを使用すると,排他エラーリトライ機能が無効でも,特定のコマンドを呼び出すときだけ排他エラーリトライ機能を有効にできます。また,コマンド単位にリトライ回数およびリトライ待ち時間を設定してリトライすることもできます。排他エラーリトライ機能を利用できるコマンドについては,「1.9.1(2) 排他エラーリトライ機能の対象となるコマンドおよびステートメント」,SetRetryModeコマンドについては,「9.9.2 SetRetryMode (排他エラーリトライ機能を設定する)」を参照してください。
(1) リトライ回数およびリトライ待ち時間
リトライ回数およびリトライ待ち時間は,レジストリの値に設定します。
(a) リトライ回数(単位:回)
- 〔レジストリキー〕
-
HKEY_LOCAL_MACHINE\SOFTWARE\Hitachi\JP1/Script\SPTX
- 〔値名〕
-
IOErrorRetryCount
- 〔値のデータタイプ〕
-
REG_DWORD
- 〔値〕
-
-
0〜100の範囲で設定します。デフォルトは0です。
-
0を設定した場合は,リトライしません。
-
値が設定されていない場合や,0〜100の範囲外の値が設定された場合は,デフォルトの0を仮定します。
-
- 〔設定が有効になるタイミング〕
-
スクリプトファイルの次回実行時
(b) リトライ待ち時間(単位:秒)
- 〔レジストリキー〕
-
HKEY_LOCAL_MACHINE\SOFTWARE\Hitachi\JP1/Script\SPTX
- 〔値名〕
-
IOErrorRetryWaitTime
- 〔値のデータタイプ〕
-
REG_DWORD
- 〔値〕
-
-
1〜60の範囲で設定します。デフォルトは1です。
-
値が設定されていない場合や,1〜60の範囲外の値が設定された場合は,デフォルトの1を仮定します。
-
- 〔設定が有効になるタイミング〕
-
スクリプトファイルの次回実行時
(c) 設定が有効になるタイミングおよび有効となる範囲
レジストリに値を設定したあとに実行するすべてのスクリプトで有効です。レジストリに設定した値は,値を設定したコンピュータでだけ有効です。
(d) リトライ回数およびリトライ待ち時間の変更
レジストリで設定したリトライ回数およびリトライ待ち時間は,SetRetryModeコマンドで変更できます。変更は,ResetRetryModeコマンドが実行されるまで有効です。
(2) 排他エラーリトライ機能の対象となるコマンドおよびステートメント
排他エラーリトライ機能の対象となるコマンドおよびステートメントの一覧を,次の表に示します。
区分 |
分類 |
コマンドまたはステートメント |
---|---|---|
基本コマンド |
変数操作 |
SetEnvironmentまたはSetEnv |
GetEnvironmentまたはGetEnv |
||
SetGV |
||
GetGV |
||
DeleteGV |
||
ファイル・フォルダ操作 |
IniRead |
|
IniWrite |
||
TextFileReplace |
||
TextOpen |
||
MakeDir |
||
DeleteDir |
||
DeleteFile |
||
Rename |
||
TempDir |
||
TempFile |
||
SetFileAttributeまたはSetFileAttr |
||
GetFileAttributeまたはGetFileAttr |
||
SetFileTime |
||
GetFileTime |
||
GetFileSize |
||
GetVersionInfoまたはGetVerInfo |
||
SplitFile |
||
CatFiles |
||
SetStandardFileまたはSetStdFile |
||
SetPath |
||
Copy |
||
メッセージ出力 |
Message |
|
メニュー呼び出し |
Menu |
|
チェック処理 |
IsEmptyDir |
|
IsExistDir |
||
IsExistFile |
||
IsWriteableDir |
||
IsFileAttributeまたはIsFileAttr |
||
IsNew |
||
外部プログラム呼び出し |
Exec |
|
NetExec |
||
CallSpt |
||
自動起動処理 |
EntryStartUp |
|
CancelStartUp |
||
特殊コマンド |
レジストリ操作 |
RegRead |
RegWrite |
||
RegDelete |
||
RegDeleteKey |
||
画像・表示処理 |
BitmapShow |
|
チェック処理 |
IsEmptyGroup |
|
ショートカット操作 |
MakeGroup |
|
DeleteGroup |
||
MakeShortcut |
||
DeleteShortcut |
||
プロセス監視 |
GetProcessCount |
|
TerminateProcess |
||
ステートメント |
For...End For |
- 重要
-
-
この機能は,Windowsのファイルシステムのディスクへの書き込み遅延によって発生する排他エラーを回避するための機能です。通常の運用で次に示すようなアクセスをするスクリプトが実行された場合は,排他エラーの検出が遅れることによって実行性能が低下しますので注意してください。
・他のプロセスで長時間アクセス中のファイルやフォルダに対してアクセスする。
・アクセス権限のないファイルやフォルダに対してアクセスする。
-
複数起動を許可されているスクリプトを実行する場合は,同じファイルやフォルダに対して同時にアクセスする可能性があるため,排他エラーが発生する頻度が高くなります。この機能を使用して排他エラーの発生を回避したい場合は,リトライ回数とリトライ待ち時間を掛け合わせた最大のリトライ時間が60秒以上となるように排他エラーリトライ機能を設定してください。例えば,最大のリトライ時間を60秒にする場合は,リトライ回数には「60」を,リトライ待ち時間には「1」を設定します。
-