ここでは、スクリプトの配付について説明します。
スクリプトとは、UNIXのシェルスクリプトおよびPCのバッチプログラムのことを指します。
注意
Windowsの64bit版OSに、32bit版の資源配付のサーバ機能または資源配付クライアントをインストールしている場合の注意事項
資源配付が実行する下記バッチファイルは32bitで動作します。
バッチ資源
前処理バッチ/後処理バッチ
nstart.bat/ astart.bat
クライアントの資源配付正常スタートアップ/資源配付異常スタートアップに登録するバッチファイル
64bit版OSでバッチファイルが32bit版として動作することで、バッチファイルで使用するコマンドがエラーになる可能性があります。
バッチファイル作成時は、以下の「1. バッチファイルの動作確認」を行い、問題がある場合は「2. 対処」を実施してください。
バッチファイルの動作確認
32bit版のcmd.exe(コマンドプロンプト)上でバッチファイルの動作検証を実施します。
32bit版のcmd.exe(コマンドプロンプト)は以下のモジュールです。
%windir%\SysWOW64\cmd.exe
例) C:\Windows\SysWOW64\cmd.exe
バッチファイル内で実行しているOSコマンドが下記エラーで失敗する場合は、「2. 対処」に従い64bit版のOSコマンドを実行するようバッチファイルを修正してください。
例) msg.exe
64bit版OSにはSystem32(64bit)のみが提供されているため、64bit版モジュールを実行する必要があります。
例) openfiles.exe
64bit版OSにはSystem32(64bit)とSysWOW64(32bit)の両方が提供されていますが、32bit版モジュールは上記エラーとなり正常に動作しません。そのため、64bit版モジュールを実行する必要があります。
対処
<OSコマンド>を以下のように記述することで、64bit版モジュールを実行できます。
%windir%\Sysnative\<OSコマンド> |
以下の条件a.~c.をすべて満たしている場合、下記環境変数でOSのbit数とバッチファイルが32bit版、64bit版のどちらで動作しているかを確認してコマンドを記述する必要があります。
条件
使用しているOSおよび製品が32bit版と64bit版が混在している環境
a.の環境で同一のバッチファイルを使用する
上記「1. バッチファイルの動作確認」でエラーが発生する
環境変数
PROCESSOR_ARCHITECTURE
"x86"の場合:32bit版 動作
"x86"以外の場合:64bit版 OS
PROCESSOR_ARCHITEW6432:
""の場合:(ネイティブの)32bit版 OS
""でない場合:64bit版OS上の32bit版動作
上記確認結果が以下の例1、例2の場合、考慮は不要です。
確認結果が例3の場合は、上記「2.対処」の考慮が必要になります。
例1:PROCESSOR_ARCHITECTUREが"x86"以外の場合
OSは64bit版、バッチファイルは64bit版で動作します。
例2:PROCESSOR_ARCHITECTUREが"x86"、かつ PROCESSOR_ARCHITEW6432が""の場合
OSは32bit版、バッチファイルは32bit版で動作します。
例3:PROCESSOR_ARCHITECTUREが"x86"、かつ PROCESSOR_ARCHITEW6432が""でない場合
OSは64bit版、バッチファイルは32bit版で動作します。
OSを判定して正しいコマンドを実行するバッチファイルの例を、以下に示します。
echo off if "%PROCESSOR_ARCHITECTURE%" == "x86" goto Wow6432 :64bit echo 64bitOSで64bitとして動作 %windir%\system32\openfiles.exe /? goto END :Wow6432 echo Wow64 or 32bit OS if "%PROCESSOR_ARCHITEW6432%" == "" goto 32bit :Wow64 echo 64bitOSで32bitとして動作 %windir%\sysnative\openfiles.exe /? goto END :32bit echo 32bitOSで32bitとして動作 %windir%\system32\openfiles.exe /? :END