何らかの理由で、%NetVerClientOrFull% を IF ステートメント内に出力することができません。何も変更しなくても、そうなる場合とそうでない場合があるので、これは本当に奇妙です。複数のマシンでテストしましたが、同じ結果が得られました。IF ステートメント内で %NetVer% を使用すると、常に出力されます。何が起こっているのですか?
ECHO クライアントまたはフル? %NetVerClientOrFull% (Client または Full を表示する必要があり、表示される場合もあります)
@echo off
set frameworkDirectory=Reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP"
FOR /F "TOKENS=6 DELIMS=\." %%A IN ('%frameworkDirectory%') DO set NetVer=%%A
ECHO The most current version of the .NET Framework installed is: %NetVer%
if "%NetVer%"=="v4" (
set clientOrFullDirectory=Reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4"
FOR /F "TOKENS=7 DELIMS=\." %%A IN ('%clientOrFullDirectory%') DO set NetVerClientOrFull=%%A
ECHO Client or Full? %NetVerClientOrFull%
)
pause
これに追加すると、3回目の実行で機能するように見えますが、意味がありません:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Nick>C:\Users\Nick\Desktop\FrameworkVersionChecker.bat
The most current version of the .NET Framework installed is: v4
Client or Full?
Press any key to continue . . .
C:\Users\Nick>C:\Users\Nick\Desktop\FrameworkVersionChecker.bat
The most current version of the .NET Framework installed is: v4
Client or Full?
Press any key to continue . . .
C:\Users\Nick>C:\Users\Nick\Desktop\FrameworkVersionChecker.bat
The most current version of the .NET Framework installed is: v4
Client or Full? Full
Press any key to continue . . .