少し前に書いたこちらの記事の続きです。
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です。
最近はバッチファイルを使うことは少なりましたが、知っておくと何かの役に立つかもしれませんね。
コメント