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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Для русской версии работает: 20.05.08 12:43  Число просмотров: 2347
Автор: 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

---
<beginners>
отличить ХР от 2000 в коммандной строке 20.05.08 10:09  
Автор: DamNet [Bugtraq.ru Team] <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 [Bugtraq.ru Team] <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 [Bugtraq.ru Team] <Denis Amelin> Статус: Elderman
<"чистая" ссылка>
Исправил. Главное работает, остальное - мелочи. ;) 20.05.08 17:58  
Автор: Den <Denis> Статус: The Elderman
Отредактировано 20.05.08 19:01  Количество правок: 1
<"чистая" ссылка>
Угу, спасибо )) 21.05.08 08:40  
Автор: DamNet [Bugtraq.ru Team] <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-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach