バッチファイルで32bitと64bitの処理を変える

スポンサーリンク

少し前に書いたこちらの記事の続きです。

systemフォルダのファイルの内容が違う
Windowsのsystem32フォルダに置いてあるファイルを参照したら、違う内容が表示されるという奇怪な現象を調査しました。

32bitと64bitでコピー先を変えたい

この中で、アプリケーションがhoge.iniを参照する場合に32bit Windowsと64bit Windowsで参照するフォルダが違うことが判明しました。
実は参照するhoge.iniはバッチファイルでコピーしています。

バッチファイルの中で、OSが32bitか64bitかを判断して、コピーする先を変えてやれば、手動でコピーする手間が省けます。

ということで、バッチファイル処理で32bit環境か64bit環境かを判断する方法を調べました。

環境変数で判断

バッチファイルの中で、この処理を行うためには環境変数を使います。

環境変数の「PROCESSOR_ARCHITECTURE」を調べれば、OSの32bitなのか、64bitなのか判断できます。

32bitの場合は、「x86」が格納されます。

64bitの場合は、「AMD64」または「IA64」が格納されます。
(搭載されているCPUによって異なります)

実際にバッチファイルに書く場合は以下のような記述になります。

@echo off
if "%PROCESSOR_ARCHITECTURE%" EQU "x86" (
echo "x86 copy to system32"
copy hoge.ini C:\Winodws\System32\
)
if "%PROCESSOR_ARCHITECTURE%" NEQ "x86" (
echo "64 copy to syswow64"
copy hoge.ini C:\Winodws\SysWOW64\
)
pause
exit

これで、32bit環境だと、system32フォルダにhoge.iniがコピーされ、64bit環境だと、SysWOW64フォルダにhoge.iniがコピーされます。

今回はコピー処理を書きましたが、もちろんほかの処理でもOKです。

最近はバッチファイルを使うことは少なりましたが、知っておくと何かの役に立つかもしれませんね。

スポンサーリンク

お役に立てばフォローお願いします