1

32 ビットおよび 64 ビットの実行可能ファイルをサーバーからユーザーのローカル マシンにコピーし、OS の種類/アーキテクチャに基づいてそれらのファイルを実行するログイン バッチ ファイルを作成しようとしています。これは私がこれまでに持っているものであり、32ビットファイルのみを起動し、64ビットファイルを検出および起動していないため、機能していないようです. 私はこれに慣れていないので、どんな支援も感謝します。

@echo off
c:
MD c:\temp
xcopy \\server\NETLOGON\SEPRemoval c:\temp /e /y
cd c:\temp
if /i "%PROCESSOR_ARCHITECTURE%" EQU "x86" goto ARCH32
if /i "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" goto ARCH64


:ARCH32
start /wait SEPprep.exe
goto done

:ARCH64
start /wait SEPprep64.exe
goto done

:done

timeout 15
cd \
del c:\temp /q
exit
4

3 に答える 3

0

問題はバッチ ファイルではなく、想定どおりに動作しない環境変数に依存していることです。

私の 64 ビット Windows 7 マシンでENVは、次のように表示されます。

PROCESSOR_ARCHITECTURE=x86
PROCESSOR_ARCHITEW6432=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=6

...したがって、PROCESSOR_ARCHITECTURE に依存して 32 ビット マシンと 64 ビット マシンを区別することはできません。

このトピックに関するMicrosoft サポート技術情報の記事があります。

プロセッサ アーキテクチャを検出する方法を修正すれば、問題ないはずです。

于 2013-01-31T21:54:36.307 に答える
0

チェックアウトsysteminfo

%SystemRoot%\system32\systeminfo.exe

または、次のような単純なもの

if defined ProgramFiles(x86)

これにより、ProgramFiles(x86) 環境変数が定義されているかどうかがチェックされます (Windows の 64 ビット バージョンでのみ定義されます)。

于 2013-02-01T02:37:35.803 に答える
0

これは、Microsoft Scripting Guys フォーラムの何人かの人たちの助けを借りて、私が最終的に思いついたものです。

@echo off
c:
MD c:\temp
xcopy \\server\NETLOGON\SEPRemoval c:\temp\ /e /y
cd /d c:\temp
if {%PROCESSOR_ARCHITEW6432%} EQU {} (
  set TRUE_ARCH=%PROCESSOR_ARCHITECTURE%
   start /b /wait SEPprep.exe
   goto Done
) else (
  set TRUE_ARCH=%PROCESSOR_ARCHITEW6432%
  start /b /wait SEPprep64.exe
  goto Done
)
echo Processor Architecture is %PROCESSOR_ARCHITECTURE%

:Done
timeout 15
rd /s /q c:\temp 1>nul 2>nul
exit
于 2013-02-01T19:40:22.327 に答える