Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
| | | | |
Может некорректно отработать in ('ver') на w2k, или я заблуждаюсь? 20.05.08 14:18 Число просмотров: 2625
Автор: Ustin <Ustin> Статус: Elderman
|
|
<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
|
|
|
|