Как отключить отсев при прогнозировании в керасе?

Многие команды DOS в разных версиях Windows похожи, но могут поддерживать разные параметры. Кроме того, новые версии Windows могут поддерживать новые команды или удалять старые версии. Таким образом, если вы хотите написать командный файл, который может работать на разных типах машин, может оказаться полезным определить версию Windows, на которой запущен командный файл. Таким образом, командный файл может выполнять команды, соответствующие операционной системе.

Следующий командный файл определяет, работает ли на компьютере Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP , Windows 2000 или Windows NT. Его можно легко модифицировать для поддержки других версий Windows по мере необходимости или для установки переменной среды на основе обнаруженной версии Windows. Обратите внимание, что для того, чтобы этот командный файл правильно различался между более новыми версиями Windows Server и потребительскими версиями Windows, он более запутан, чем пакетные файлы, которые вы можете увидеть в другом месте. Я объяснил приведенные ниже рассуждения.

1) Откройте окно «Блокнот».

2) Скопируйте следующий текст в Блокнот (вы можете получить доступ к печатной версии этого наконечника, поскольку некоторые строки завертываются ):

@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

3) Сохраните файл как% WINDIR% \ whichvers.bat

4) Теперь из командной строки введите:

whichvers

Это покажет, какую версию Windows вы используете.

ПРИМЕЧАНИЯ:

  1. Обоснование использования команды SYSTEMINFO вместо того, чтобы полагаться на Команда VER состоит в том, что Windows Server 2008 «разделяет» номера версий с другими версиями Windows (см. Microsoft). Таким образом, полагаясь на «номер версии» 6.0 для обнаружения Windows Vista или 6.1 для обнаружения Windows 7, невозможно отличить машину от Windows Server 2008 или Windows Server 2008 R2.
  2. Создание% TEMP% \ osname .txt заключается исключительно в том, что я не смог разместить результаты systeminfo | найдите «OS Name» непосредственно в команде for / f - ему не нравятся команды с каналами. Вы можете найти более простой способ справиться с захватом информации из SYSTEMINFO - если да, прокомментируйте.
  3. Переменная среды% vers% имеет ведущие пробелы. Я мог бы удалить их с помощью более длинного командного файла, но в этом случае он не нужен.
  4. Пакетный файл обнаруживает для SYSTEMINFO, поскольку он предполагает, что если он выходит за рамки более старых обнаружений операционной системы, запущенная версия Windows даже старше и не будет иметь этой утилиты. В 64-разрядной версии Windows 7 она по-прежнему находится в папке% SystemRoot% \ system32 - если более поздние версии Windows становятся только 64-разрядными, этот пакетный файл может быть обновлен.

Вернитесь на страницу Windows XP и DOS.

13
задан Akhilesh 13 December 2017 в 06:41
поделиться