Остановился на ниже приведенном коде скрипта, который определяет версию ОС, но универсальности не получилось, потому как в NT 4.0 отсутствует параметр в реестре "ProductName", а на в Viste вообще непонятное происходит
Цитата:
For /F "tokens=4" %%V in ('ver') do if %%V==4.0 goto ntdetect
rem пришлось определять версию nt 4 через ver ввиду отсутствия в реестре параметра "ProductName"
For /F "Skip=4 Tokens=3,*" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V ProductName') Do Set OS1=%%A %%B
rem объявляем переменную os1 и присваиваем ей значение параметра "ProductName"
For /F "Tokens=1-3,*" %%C In ('Echo %OS1%') do if %%C==Microsoft if %%D==Windows if %%E==2000 start 2k.cmd
rem выполняем анализ переменной, если ее значение Microsoft Windows 2000 - запускаем 2k.cmd
For /F "Tokens=1-3,*" %%C In ('Echo %OS1%') do if %%C==Microsoft if %%D==Windows if %%E==XP start xp.cmd
rem выполняем анализ переменной, если ее значение Microsoft Windows XP - запускаем xp.cmd
For /F "Tokens=1-4,*" %%C In ('Echo %OS1%') do if %%C==Microsoft if %%D==Windows if %%E==Server if %%F==2003 start 2k3.cmd
rem выполняем анализ переменной, если ее значение Microsoft Windows Server 2003 - запускаем 2k3.cmd
For /F "Tokens=1-2,*" %%C In ('Echo %OS1%') do if %%C==Windows if %%D==Vista start vista.cmd
rem выполняем анализ переменной, если ее значение Windows Vista - должен запускаться vista.cmd
rem но на практике в висте скрипт не выполняется - появляется сообщение о выключенном echo
rem и неожиданном появлении Home
|
От скрипта требуется что бы при запуске в любой ос - он безошибочно определял ее и запускал соответствующий ей файл, а также хотелось чтобы он был максимально универсален. Есть какие-нибудь идеи насчет nt и висты ?