Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Скрипт автоматический определяющий OC

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Sun Jun 06, 2010 04:40    Post subject: Скрипт автоматический определяющий OC Reply with quote

Возникла надобность сделать автоматический запуск приложений с автоматическим определением ОС.
То есть если у нас ХР, то запускается одна программа, если Vista\7, то другая.
Наверное это будет выглядить как скрипт определяющий битность ОС
Code:
IF EXIST "%ProgramFiles(x86)%" (
  Start /Wait Program1.exe
) Else (
  Start /Wait Program2.exe
)

Но я не нашёл отличия в переменных средах между ХР и Vista\7
Есть у кого какие идеи?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Jun 06, 2010 09:02    Post subject: Reply with quote

Вообще, можно делать так:
Code:
ver|find "Windows XP">nul
if not errorlevel 1 (
   echo Windows XP
) else (
   echo Not Windows XP
)

То есть, запускаем команду отображения версии системы и передаем вывод команде поиска строки.

Строку, в которой будет производиться поиск, всегда можно получить, набрав в консоли любой винды просто команду ver.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Sun Jun 06, 2010 10:50    Post subject: Reply with quote

MVV, я в скриптах пока несилен, как использовать этот код для запуска той или иной программы при разных результатах данного кода?
Каков итоговый скрипт если у меня есть 2 программы:
Program1.exe запуск при XP
Program2.exe запуск при not ХР
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Jun 06, 2010 17:08    Post subject: Reply with quote

Дык я ж написал свой код в том же стиле, что и твой, просто другое условие. Там же и запускать, где в твоем:
Code:
@echo off
ver|find "Windows XP">nul
if not errorlevel 1 (
   start "" "Program1.exe"
) else (
   start "" "Program2.exe"
)
cls

_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun Jun 06, 2010 20:02    Post subject: Reply with quote

Code:
@ver |find "Windows XP" >nul &&start "" "progXP.exe" ||start "" "prog7.exe"


Добавлено
Flasher wrote:
@echo off не помешает

OK


Last edited by Tol!k on Sun Jun 06, 2010 20:32; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Jun 06, 2010 20:17    Post subject: Reply with quote

@echo off не помешает
HA3APET
И чтобы было понятно(а то мало ли), это батник. Сохранить в cmd/bat.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun Jun 06, 2010 20:50    Post subject: Reply with quote

Flasher wrote:
это батник. Сохранить в cmd/bat.
Уместится в кнопке
Code:
TOTALCMD#BAR#DATA
%comspec% /c
@ver |find "Windows XP" >nul &&start "" "progXP.exe" ||start "" "prog7.exe"
%COMMANDER_PATH%\WCMICONS.DLL,44
XP | 7

1
-1
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Jun 06, 2010 21:08    Post subject: Reply with quote

Tol!k, жесть! Чего только мелкомягкие не придумали...
Даже не представляю, додумались ли они описать это в справке к какой-либо внутренней команде, и в какой могли бы...
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun Jun 06, 2010 21:27    Post subject: Reply with quote

> додумались ли они описать это
Хм, додумались: hh.exe %windir%\Help\ntcmds.chm::/ntcmds_shelloverview.htm

У приведённого кода есть "фича": если запуск progXP.exe завершится неудачей, будет запущена prog7.exe даже если ось не ХР.
Если это недопустимо, нужно сделать принудительный выход
Code:
@ver |find "Windows XP" >nul &&(start "" "progXP.exe" &exit) ||start "" "prog7.exe"


Last edited by Tol!k on Sun Jun 06, 2010 23:20; edited 1 time in total
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Jun 06, 2010 23:13    Post subject: Reply with quote

Действительно. Кто б мог подумать, что Windows Help полезен... Я нашел информацию в системной справке в статье "Общие сведения о командной оболочке", та самая статья из файла ntcmds.chm.

Но у такого способа обработки есть один тонкий момент. Если команда, указанная между && и ||, выполняется не успешно, то команда за || выполнена будет. То есть, система попытается выполнить обе. В данном примере этой командой является команда start, то есть, если первая команда start провалится, командный процессор выполнит вторую, которая по условию задачи не предназначена для текущей операционной системы.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun Jun 06, 2010 23:27    Post subject: Reply with quote

Quote:
Я нашел информацию в системной справке в статье "Общие сведения о командной оболочке", та самая статья из файла ntcmds.chm.
Если выполнить команду hh.exe %windir%\Help\ntcmds.chm::/ntcmds_shelloverview.htm на Windows XP, то попадёшь именно на эту статью.
Quote:
Но у такого способа обработки есть один тонкий момент.
Дополнил предыдущий пост.
Quote:
То есть, система попытается выполнить обе.
Попытка выполнения второй команды будет только в случае неудачного выполнения первой. Если первая команда выполнена успешно, попытки выполнения второй не будет.
Back to top
View user's profile Send private message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Mon Jun 07, 2010 04:51    Post subject: Reply with quote

MVV, во, теперь понятно. Спасибо большое.
Tol!k, спасибо, оба способа работают.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group