информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
ver 20.05.08 11:43  Число просмотров: 2500
Автор: dl <Dmitry Leonov>
<"чистая" ссылка>
<beginners>
отличить ХР от 2000 в коммандной строке 20.05.08 10:09  
Автор: DamNet <Denis Amelin> Статус: Elderman
<"чистая" ссылка>
Всем привет, как с помощью переменных командной строки точно знать на какой ОС запущен скрипт? :)

Все это нужно для того что бы поменять boot.ini на разных операционках )

З.Ы. %os% одинаково возвращает Windows_NT (
З.Ы. может в XP 100% есть какой-то либо файл, которого 100% нету в 2000? :)

всем заранее сапсибо )
if exist %windir%\winsxs\nul (echo winxp) else (echo win2000) 20.05.08 13:31  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
ver 20.05.08 11:43  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка>
это понятно что ver, но как ее сравнить с "Windows XP[бла-бла-бла]?? 20.05.08 12:09  
Автор: DamNet <Denis Amelin> Статус: Elderman
<"чистая" ссылка>
ведь if ver == "Microft Windows XP[бла-бла-бла]" не прокатит )
Для русской версии работает: 20.05.08 12:43  
Автор: Ustin <Ustin> Статус: Elderman
Отредактировано 20.05.08 12:51  Количество правок: 2
<"чистая" ссылка>
@echo off
set xp=Версия 5.1.2600]
for /f "delims=[ tokens=2 usebackq" %%i in (`cmd.exe /c ver`) do set VERSION=%%i
if /i "%version%" == "%xp%" (
echo here!
echo ...
echo here!!!
)

---
, причём в OEM - кодировке (!).
Собсно чтобы сделать общий случай достаточно набрать статистику по cmd.exe /c ver на разных тазах
Если на 2к не хавает usebackq и не работает, то:
 
 ...
 cmd.exe /c ver >tmp.tmp
 for /f "delims=[ tokens=2" %%i in (tmp.tmp) do set VERSION=%%i
 if /i "%version%" == "%xp%" (
 ...
 del tmp.tmp

---
еще вариант: [upd] 20.05.08 13:51  
Автор: Den <Denis> Статус: The Elderman
Отредактировано 20.05.08 18:58  Количество правок: 1
<"чистая" ссылка>
@echo off
for /f "eol=] tokens=2 delims=[]" %%i in ('ver') do for /f "tokens=2,3 delims=. " %%j in ("%%i") do set winver=%%j.%%k
if "%winver%"=="5.00" echo MS Windows 2000
if "%winver%"=="5.1" echo MS Windows XP
if "%winver%"=="5.2" echo MS Windows 2003

---

Важно: в опции DELIMS второго FOR после точки стоит пробел - он не лишний.
отличный вариант (только для 2000 нужно не 5.0 а 5.00", тогда работает ) 20.05.08 16:07  
Автор: DamNet <Denis Amelin> Статус: Elderman
<"чистая" ссылка>
Исправил. Главное работает, остальное - мелочи. ;) 20.05.08 17:58  
Автор: Den <Denis> Статус: The Elderman
Отредактировано 20.05.08 19:01  Количество правок: 1
<"чистая" ссылка>
Угу, спасибо )) 21.05.08 08:40  
Автор: DamNet <Denis Amelin> Статус: Elderman
<"чистая" ссылка>
Может некорректно отработать in ('ver') на w2k, или я заблуждаюсь? 20.05.08 14:18  
Автор: Ustin <Ustin> Статус: Elderman
<"чистая" ссылка>
Почему некорректно? 20.05.08 14:47  
Автор: Den <Denis> Статус: The Elderman
Отредактировано 20.05.08 14:51  Количество правок: 1
<"чистая" ссылка>
Почему некорректно?
cmd скрипт выполняется в cmd shell, а ver является командой, встроенной в cmd shell.
Одинарные кавычки указывают на то, что входным параметром для for будет стандартный вывод команды, указанной в одинарных кавычках, тогда как двойные кавычки указывают параметр-строку. Опция usebackq меняет местами использование одинарных и двойных кавычек в команде FOR.

В любом случае, сейчас проверить работоспособность данного скрипта на Win2k не могу, т.к. эта ось доступна мне только дома.
1) for /? 20.05.08 17:33  
Автор: Ustin <Ustin> Статус: Elderman
Отредактировано 20.05.08 17:34  Количество правок: 1
<"чистая" ссылка>
usebackq        - применение новой семантики, при которой строки,
                          заключенные в обратные кавычки, выполняются как 
                          команды, строки, заключенные в прямые одиночные 
                          кавычки, являются строкой литералов команды, а 
                          строки, заключенные в двойные кавычки, используются
                          для выделения имен файлов в списках имен файлов

---
2) есть подозрение, что в 2k нет этой самой новой семантики
Проверил, на 2К работает 21.05.08 11:44  
Автор: LOnG <LOnG> Статус: Member
<"чистая" ссылка>
м.б... наизусть не помню. 20.05.08 18:02  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach