информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяВсе любят медЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и 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 <Денис Т.> Статус: 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 <Денис Т.> Статус: 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 <Денис Т.> Статус: 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 <Денис Т.> Статус: The Elderman
<"чистая" ссылка>
1




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


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