0

これはとても簡単なことのように思えますが、実際にはとても面倒なことでした。

Windows 7 では、以下をコマンド プロンプトに貼り付けて、またはProgramFiles(x32)のいずれか%programfiles%に設定でき%programfiles(x86)%ます。

%comspec% /c if exist "%programfiles%" (set "ProgramFiles(x32)=%programfiles%") else (set %ProgramFiles(x32)=%programfiles(x86)%")

ただし、Windows XP では、同じ方法と他の方法を使用しても、同じ結果が得られません。

E:\>%comspec% /c if exist "%programfiles%" (set "ProgramFiles(x32)=%programfiles%") else (set "ProgramFiles(x32)=%programfiles(x86)%")
E:\Program was unexpected at this time.

E:\>%comspec% /c if exist "%programfiles%" (set ProgramFiles(x32)=%programfiles%) else (set ProgramFiles(x32)=%programfiles(x86)%)
E:\Program was unexpected at this time.

E:\>%comspec% /c if exist "%programfiles%" (set "ProgramFiles(x32)"="%programfiles%") else (set "ProgramFiles(x32)=%programfiles(x86)%")
E:\Program was unexpected at this time.

E:\>%comspec% /c if exist "%programfiles%" (set ProgramFiles(x32)="%programfiles%") else (set ProgramFiles(x32)=%programfiles(x86)%)
"E:\Program Files") was unexpected at this time.

E:\>%comspec% /c if exist "%programfiles%" (set ProgramFiles(x32)=%%programfiles%%) else (set ProgramFiles(x32)=%programfiles(x86)%)
%E:\Program was unexpected at this time.

set ProgramFiles(x32)=%programfiles% は、Win XP と 7 の両方で、コマンド ラインから直接正常に動作します。

私は何が欠けていますか?

余談ですが、Microsoft が %ProgramFiles% を 32 ビット プログラムのディレクトリにしてくれたらよかったのにと思います。OSのビット数に関係なく、32ビットプログラムが同じ場所にある場合、このチェックを行う必要があるロジックがわかりません。

4

2 に答える 2

0

@dbenham非常に深く、私の別の質問で非常に高く評価されている啓蒙は、これも解決します-Windowsショートカットと比較した場合のDOSプロンプトでのDOS環境設定の異なる動作(ifステートメント)

于 2012-08-16T20:12:30.030 に答える
0

.bat ファイル構文以外のほとんどすべてでプログラミングする方が、本当に優れています。私見では。

しかし、「あなたが見逃していること」は、.bat 構文が「プログラム」と「ファイル」を (パスの一部ではなく) 2つの別個の単語と見なすことです。

簡単な回避策:

  cd c:\
  dir/x pro*

あなたの場合、おそらく「progra~1」(「プログラムファイル」の場合)と「progra~2」(「プログラムファイル(x86)」の場合)があります。それに応じて.batファイルを変更するだけです:)

于 2012-08-16T04:50:24.280 に答える