1

私はこのコードを持っています:

if "%2"=="32" (
set bit=This is 32bit
)
if "%2"=="64" (
set bit=This is 64bit
)
echo %bit%
)

sample.bat /s 64出力を使用しようとすると「これは64ビットです」ですがsample.bat /s 32、出力を使用しようとすると「これは64ビットです」のままです。次に、それをsample.bat 64に戻します。出力は、「これは32ビットです」になりました。変数の初期化が遅れていると思います。誰かが回避策を知っていますか?

4

1 に答える 1

3

を実行するsample.bat 64と、64はであり%1、ではありません%2。バッチファイルに渡される最初のパラメータは常にです%1-バッチファイル自体の名前はにあります%0。別の試行でランダムな出力の残骸または何かが残っています。これを試して:

setlocal
if "%1"=="32" (
set bit=This is 32bit
)
if "%1"=="64" (
set bit=This is 64bit
)
echo %bit%
)
endlocal

setlocalバッチファイルの終了時に環境の変更が破棄されることを確認してください。これにより、テストの残り物を心配する必要がなくなります。

を入力するだけでは、これはまだ正しく機能しません。これsample.batは、渡されるパラメーターがまったく処理されていないためです。

于 2012-12-10T03:35:10.733 に答える