0

XP/2003 または 7/R2 で実行する場合は異なる動作をする必要があるインストール スクリプトがあり、完全に正常に動作しています。数週間前まで、XPeで実行されないことがわかりました(7eで正常に動作します)、find.exeがXPeに含まれていないことがわかりました。

私の現在のスクリプトは以下を使用しています:

ver | find "5." > nul
if %ERRORLEVEL% == 0 goto WinXP
    goto Win7

同僚の XPe デバイスを借りて実行可能なソリューションをテストし、XP Pro から find.exe をコピーしようとしましたが、それでも機能しませんでした。これのさまざまなバージョン (findxp.exe へのフル パス、.exe あり/なし) を試しましたが、それでも機能しません。XPeからの出力は次のとおりです。

ver   | findxp.exe "5."  1>nul
The system cannot find the file specified.

私が本当に判断したいのは、それが XP/2003 かどうかです。それが XPe であるかどうかを教えてくれた解決策に反対するつもりはありませんが、すべてのバージョンを説明する必要があるため、スクリプトが少し複雑になる可能性がありますが、将来的には役立つかもしれないし、役に立たないかもしれません。 Windowsの。

ありがとう、ブライアン

4

4 に答える 4

0

これを試して:

@echo off
setlocal EnableDelayedExpansion

::Identify OS
for /F "delims=" %%a in ('ver') do set ver=%%a
set Version=
for %%a in (95=95 98=98 ME=ME NT=NT 2000=2000 5.1.=XP 5.2.=2003 6.0.=Vista 6.1.=7 6.2.=8) do (
   if "!Version!" equ "this" (
      set Version=Windows %%a
   ) else if "!ver: %%a=!" neq "%ver%" (
      set Version=this
   )
)

::Identify bit
if exist "%SYSTEMDRIVE%\Program Files (x86)" (
   set Type=64 bit
) else (
   set Type=32 bit
)

::Display result
echo %Version% %Type%

© Aacini at dotips

于 2013-05-06T18:05:11.227 に答える
0
@ECHO OFF
SET OSVersion=Unknown

VER | FINDSTR /L "5.0" > NUL
IF %ERRORLEVEL% EQU 0 SET OSVersion=2000

VER | FINDSTR /L "5.1." > NUL
IF %ERRORLEVEL% EQU 0 SET OSVersion=XP

VER | FINDSTR /L "5.2." > NUL
IF %ERRORLEVEL% EQU 0 SET OSVersion=2003

VER | FINDSTR /L "6.0." > NUL
IF %ERRORLEVEL% EQU 0 SET OSVersion=Vista

VER | FINDSTR /L "6.1." > NUL
IF %ERRORLEVEL% EQU 0 SET OSVersion=7

IF %OSVersion%==Unknown (
 ECHO Unable to determine your version of Windows.
) ELSE (
 ECHO You appear to be using Windows %OSVersion%
)

ECHO.
PAUSE
于 2013-05-06T17:58:35.327 に答える
0

以下で確認してください。また、ここからアクセスできます: http://pastebin.com/iUtgN4ZU

    @echo off

ver | find "2003" > nul
if %ERRORLEVEL% == 0 goto ver_2003

ver | find "XP" > nul
if %ERRORLEVEL% == 0 goto ver_xp

ver | find "2000" > nul
if %ERRORLEVEL% == 0 goto ver_2000

ver | find "NT" > nul
if %ERRORLEVEL% == 0 goto ver_nt

if not exist %SystemRoot%\system32\systeminfo.exe goto warnthenexit

systeminfo | find "OS Name" > %TEMP%\osname.txt
FOR /F "usebackq delims=: tokens=2" %%i IN (%TEMP%\osname.txt) DO set vers=%%i

echo %vers% | find "Windows 7" > nul
if %ERRORLEVEL% == 0 goto ver_7

echo %vers% | find "Windows Server 2008" > nul
if %ERRORLEVEL% == 0 goto ver_2008

echo %vers% | find "Windows Vista" > nul
if %ERRORLEVEL% == 0 goto ver_vista

goto warnthenexit

:ver_7
:Run Windows 7 specific commands here.
echo Windows 7
goto exit

:ver_2008
:Run Windows Server 2008 specific commands here.
echo Windows Server 2008
goto exit

:ver_vista
:Run Windows Vista specific commands here.
echo Windows Vista
goto exit

:ver_2003
:Run Windows Server 2003 specific commands here.
echo Windows Server 2003
goto exit

:ver_xp
:Run Windows XP specific commands here.
echo Windows XP
goto exit

:ver_2000
:Run Windows 2000 specific commands here.
echo Windows 2000
goto exit

:ver_nt
:Run Windows NT specific commands here.
echo Windows NT
goto exit

:warnthenexit
echo Machine undetermined.

:exit

ファイルを %WINDIR%\vers.bat として保存します。

その後、コマンドプロンプトから実行します:

vers

これにより、Windows のバージョンが表示されます。

于 2013-05-06T17:58:43.557 に答える