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 

Autorun
Goto page Previous  1, 2, 3 ... 44, 45, 46 ... 131, 132, 133  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



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

Post (Separately) Posted: Sun Dec 30, 2012 22:29    Post subject: Reply with quote

Loopback wrote:
Созданная во внешнем скрипте переменная вообще не будет видна в скрипте Autorun (и в ТС).
Это было понятно. Я как раз к тому, что, в скрипте Autorun она не нужна будет, поскольку необходимое значение будет задействовано в тех же скриптах, в кот. и так можно его получить без специально созданной переменной среды.
Под улавливанием я подразумевал какие-то неспецифичные примеры задействования таких переменных скорее вне скриптов (т.е. касаемо кнопок/юзеркоманд, где это необходимость может возникнуть).
Если же мы говорим про переменные, требуемые исключительно при запуске ТС, то это уже другой момент, кот. тоже есть смысл обсудить в плане применения.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Mon Dec 31, 2012 00:07    Post subject: Reply with quote

Loopback wrote:
Тут возникает другой вопрос - а зачем нужно условие%ShowHiddensOnStart% = 0, если оно ничего не делает.

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



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Mon Dec 31, 2012 08:59    Post subject: Reply with quote

Loopback wrote:


Строка запуска в Autorun:
Code:

ProcessExecGetOutput SID cscript.exe "//Nologo get_sid.vbs"
SetEnv /EV USER_SID %SID%


насколько я понял, нужно подгружать плагин Process, так?.
есть одно маленькое "но": при запуске ТС с другой рабочей папкой, отличающейся от папки ТС, например через контекстное меню проводника - скрипт берет рабочую папку оттуда, но есть решение, код такой:
Code:

ProcessExecGetOutput /EV /OEM COMMANDER_USERSID cscript.exe '//Nologo "%commander_path%\Macroses\get_usersid.vbs"' '%commander_path%'

естественно, вместо Macroses может быть любая папка, но тут уж люди сами разберутся, я думаю.
кстати, с помощью ProcessExecGetOutput можно очень много чего добыть Smile , спасибо за скрипт по получению SID.

Добавлено спустя 24 минуты:

MVV wrote:
Loopback wrote:
Тут возникает другой вопрос - а зачем нужно условие%ShowHiddensOnStart% = 0, если оно ничего не делает.

Полагаю, чтобы ничего не делать, если условие истинно, и выполнять какие-то действия в противном случае (внешний условный блок).


точноSmile.
Пример:
Code:
If %EncryptAdminINI% = 0 Then
ElseIf %EncryptAdminINI_withSID% = 1 Then
  ShellExec /EV /SW_HIDE '%COMMANDER_PATH%\Macroses\ccrypt.exe' '-e -v -r -s -K "%COMMANDER_USERSID%" "%commander_path%\Admin.ini"'
Else
  ShellExec /EV /SW_HIDE '%COMMANDER_PATH%\Macroses\ccrypt.exe' '-e -v -r -s -K "%USERNAME%" "%commander_path%\Admin.ini"'
EndIf

разбираем условие: если %EncryptAdminINI% равно 0, то ничего не происходит. если же отличается от 0, происходит проверка второй переменной: %EncryptAdminINI_withSID%, и если значение переменной равно 1 - то происходит запуск ccrypt.exe с ключом шифрования, взятой из переменной %COMMANDER_USERSID% (thanks to Loopback). если же значение %EncryptAdminINI_withSID% отличается от 1, то происходит запуск того же ccrypt.exe, но ключ шифрования берется уже из переменной %USENAME%.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1279

Post (Separately) Posted: Mon Dec 31, 2012 17:48    Post subject: Reply with quote

Flasher wrote:
Я как раз к тому, что, в скрипте Autorun она не нужна будет, поскольку необходимое значение будет задействовано в тех же скриптах, в кот. и так можно его получить без специально созданной переменной среды.

Разумеется, в этом случае не нужно. Но задача состояла как раз в том, что это значение нужно использовать в Autorun, а кроме как скриптом получить его затруднительно.

Пример KopBuH с использованием SID для шифрования вполне показателен, поскольку как я понял, это значение используется и после окончания запуска.

MVV wrote:
Полагаю, чтобы ничего не делать, если условие истинно, и выполнять какие-то действия в противном случае (внешний условный блок).

Имелось в виду, что в том конкретном примере можно было бы оба условия объединить в одно:
Code:

If (%ShowHiddensOnStart% <> 0) and (%COMMANDER_ASADMIN% = 1) Then
...
EndIf


KopBuH wrote:
при запуске ТС с другой рабочей папкой, отличающейся от папки ТС, например через контекстное меню проводника - скрипт берет рабочую папку оттуда, но есть решение, код такой:

Да, для этого и сделана возможность задать рабочий каталог.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Mon Dec 31, 2012 23:24    Post subject: Reply with quote

Quote:
Имелось в виду, что в том конкретном примере можно было бы оба условия объединить в одно:

Пришлось бы писать это дополнительное условие также и в каждой ветке Else[If].
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Wed Jan 02, 2013 08:59    Post subject: Reply with quote

Loopback, приведи пожалуйста пример сравнения, если ключ в ini файле есть, но он пустой.

Скажем, вот на таком практическом примере:
Code:
 
If (%OfflineSystemDir% = "") OR (%OfflineSystemDir% = %SystemRoot%) Then
ElseIf FileExist "C:\Windows" Then
  SetEnv COMMANDER_OFFLINESYSTEM "C:\Windows"
ElseIf FileExist "D:\Windows" Then
  SetEnv COMMANDER_OFFLINESYSTEM "D:\Windows"
ElseIf FileExist "E:\Windows" Then
  SetEnv COMMANDER_OFFLINESYSTEM "E:\Windows"
ElseIf FileExist "F:\Windows" Then
  SetEnv COMMANDER_OFFLINESYSTEM "F:\Windows"
Else
  SetEnv /EV COMMANDER_OFFLINESYSTEM "%OfflineSystemDir%"
EndIf

предположим, что переменная %OfflineSystemDir% читается из ini файла, и файл содержит ключ, но значение там не установлено (пустое).
разбираем условие: если значение %OfflineSystemDir% или пустое, или равно с переменной %SystemRoot%, то происходит цикл проверок на наличие папки Windows на разных дисках. при первом же совпадении, эта папка устанавливается как значение переменной %OfflineSystemDir%.
если же ключ из ini файла был прочитан, и не совпадает со значением %SystemRoot% то он записывается в переменную %COMMANDER_OFFLINESYSTEM%.

Еще есть такой вопрос: как сделать так, чтобы проверка ElseIf FileExist "E:\Windows" Then проверяла так же не совпадает ли оно с %SystemRoot%?.
типа такового:
Code:
ElseIf (FileExist C:\Windows) AND (C:\Windows <> %SystemRoot%) Then


вот еще вариант, который я пробовал:
Code:
If %OfflineSystemDir% = False Then
  FileExist OfflineDirAtDriveC C:\Windows
  FileExist OfflineDirAtDriveD D:\Windows
  FileExist OfflineDirAtDriveE E:\Windows
  FileExist OfflineDirAtDriveF F:\Windows
ElseIf (%OfflineDirAtDriveC% = 1) AND (%SystemRoot% <> C:\Windows) Then
  SetEnv COMMANDER_OFFLINESYSTEM "C:\Windows"
ElseIf (%OfflineDirAtDriveD% = 1) AND (%SystemRoot% <> D:\Windows) Then
  SetEnv COMMANDER_OFFLINESYSTEM "D:\Windows"
ElseIf (%OfflineDirAtDriveE% = 1) AND (%SystemRoot% <> E:\Windows) Then
  SetEnv COMMANDER_OFFLINESYSTEM "E:\Windows"
ElseIf (%OfflineDirAtDriveF% = 1) AND (%SystemRoot% <> F:\Windows) Then
  SetEnv COMMANDER_OFFLINESYSTEM "F:\Windows" 
Else
  SetEnv /EV COMMANDER_OFFLINESYSTEM "%OfflineSystemDir%"
EndIf
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Jan 02, 2013 13:11    Post subject: Reply with quote

Loopback wrote:
Пример KopBuH с использованием SID для шифрования вполне показателен, поскольку как я понял, это значение используется и после окончания запуска.
Для меня пока не показателен. Сам же назвал запрос очень специфичным. Я писал про неспецифичные задачи. А то, что используется после запуска, возвращается и без участия Autorun (мы только это обсудили).

KopBuH wrote:
приведи пожалуйста пример сравнения, если ключ в ini файле есть, но он пустой.
Я же приводил.
Только надо ставить конкретное значение, как у меня False, а не пустое.

А что даёт COMMANDER_OFFLINESYSTEM, чего не даст WINDIR?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Wed Jan 02, 2013 13:25    Post subject: Reply with quote

Flasher wrote:
KopBuH wrote:
приведи пожалуйста пример сравнения, если ключ в ini файле есть, но он пустой.
Я же приводил.
Только надо ставить конкретное значение, как у меня False, а не пустое.


про конкретное значение я знаю, например у меня в некоторых ключах оно Unknown.
просто Loopback обещал добавить условие сравнения, если ключ в ini файле пустой. а поскольку в Readme.txt ничего не появилось, приходится писать сюда.

Flasher wrote:
А что даёт COMMANDER_OFFLINESYSTEM, чего не даст WINDIR?


я добавляю в сборку некоторые функции для работы с отключенной (оффлайн) системой: подключение оффлайн реестра, просмотр событий, анализ BSOD, выгрузка системных настроек и т.д.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Jan 02, 2013 13:45    Post subject: Reply with quote

KopBuH
Что в таком случае онлайн-система? Удалённое управление?
Реестр подключается прямиком из Autorun? Каким образом?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Wed Jan 02, 2013 13:52    Post subject: Reply with quote

Flasher wrote:
KopBuH
Что в таком случае онлайн-система? Удалённое управление?

текущая активная система.
Flasher wrote:

Реестр подключается прямиком из Autorun? Каким образом?

реестр подключается через пункт меню:
http://i52.fastpic.ru/big/2013/0102/0b/2cb6ac3441245b833352b0c2681b260b.jpg
путь к реестру задается из Autorun.
но эти вопросы (как и ответы) по-моему не по теме топика Sad .
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Jan 02, 2013 13:58    Post subject: Reply with quote

KopBuH wrote:
текущая активная система
Это как раз оффлайн (название сопряжено с работающей/неработающей сетью).
KopBuH wrote:
но эти вопросы (как и ответы) по-моему не по теме топика
Всё, что связано с Autorun и его примерами - по теме (по крайней мере касаемо вопросов).
KopBuH wrote:
Loopback обещал добавить условие сравнения, если ключ в ini файле пустой
Можно пруфлинк (не припомню, хотя тоже на эти грабли в своё время напоролся) ?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Wed Jan 02, 2013 14:05; edited 1 time in total
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1279

Post (Separately) Posted: Wed Jan 02, 2013 14:04    Post subject: Reply with quote

MVV wrote:
Пришлось бы писать это дополнительное условие также и в каждой ветке Else[If].

Но не для того конкретного примера Smile
KopBuH wrote:
Скажем, вот на таком практическом примере:

Если нет разницы, пусто ли значение ключа, или он отсутствует совсем, то при использовании в IniRead в качестве дефолтного значения пустого значения можно сделать так:
Code:

If (%OfflineSystemDir% <> "") AND (%OfflineSystemDir% <> %SystemRoot%) Then
 SetEnv /EV COMMANDER_OFFLINESYSTEM %OfflineSystemDir%
ElseIf FileExist "C:\Windows" Then
 SetEnv COMMANDER_OFFLINESYSTEM "C:\Windows"
ElseIf FileExist "D:\Windows" Then
 SetEnv COMMANDER_OFFLINESYSTEM "D:\Windows"
ElseIf FileExist "E:\Windows" Then
 SetEnv COMMANDER_OFFLINESYSTEM "E:\Windows"
ElseIf FileExist "F:\Windows" Then
 SetEnv COMMANDER_OFFLINESYSTEM "F:\Windows"
EndIf

KopBuH wrote:
вот еще вариант, который я пробовал:

Так работать не будет, поскольку при первом совпадении условия, последующие условия не проверяются. Следовательно, переменные OfflineDirAtDriveC и т.д. нужно присваивать перед условием.
Code:

FileExist OfflineDirAtDriveC C:\Windows
FileExist OfflineDirAtDriveD D:\Windows
FileExist OfflineDirAtDriveE E:\Windows
FileExist OfflineDirAtDriveF F:\Windows

If (%OfflineDirAtDriveC% = 1) AND (%SystemRoot% <> C:\Windows) Then
 SetEnv COMMANDER_OFFLINESYSTEM "C:\Windows"
ElseIf (%OfflineDirAtDriveD% = 1) AND (%SystemRoot% <> D:\Windows) Then
 SetEnv COMMANDER_OFFLINESYSTEM "D:\Windows"
ElseIf (%OfflineDirAtDriveE% = 1) AND (%SystemRoot% <> E:\Windows) Then
 SetEnv COMMANDER_OFFLINESYSTEM "E:\Windows"
ElseIf (%OfflineDirAtDriveF% = 1) AND (%SystemRoot% <> F:\Windows) Then
 SetEnv COMMANDER_OFFLINESYSTEM "F:\Windows" 
Else
 SetEnv /EV COMMANDER_OFFLINESYSTEM "%OfflineSystemDir%"
EndIf


Flasher wrote:
Для меня пока не показателен. Сам же назвал запрос очень специфичным. Я писал про неспецифичные задачи. А то, что используется после запуска, возвращается и без участия Autorun (мы только это обсудили).

Переменные окружения, созданные в скриптах, не могут быть использованы в TC после выхода из скрипта. Функция устраняет это ограничение для тех случаев, когда значение, которое можно получить только внешним скриптом, нужно использовать в дальнейшем в ТС.
Я не могу сейчас сходу придумать такие примеры, однако ввиду универсальности решения, применение наверняка найдется.
KopBuH wrote:
просто Loopback обещал добавить условие сравнения, если ключ в ini файле пустой. а поскольку в Readme.txt ничего не появилось, приходится писать сюда.

Так все уже давно есть, это дефолтное значение, которое записывается в переменную, если ключ отсутствует.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Jan 02, 2013 14:10    Post subject: Reply with quote

Loopback wrote:
нужно использовать в дальнейшем в ТС
Ты имеешь в виду те самые кнопки/юзеркоманды, о которых я писал? Без примеров как-то не ахти. Sad Код не нужен, нужно простое описание.
Loopback wrote:
это дефолтное значение, которое записывается в переменную, если ключ отсутствует
Он имеет в виду, если ставить кавычки вместо значения.
Quote:
IniRead COMMANDER_LANGINI %COMMANDER_INI% Configuration LanguageIni ""

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1279

Post (Separately) Posted: Wed Jan 02, 2013 14:17    Post subject: Reply with quote

Flasher wrote:
Ты имеешь в виду те самые кнопки/юзеркоманды, о которых я писал? Без примеров как-то не ахти.

Ну видишь ли, я сам до сих пор обходился без этого функционала. Потом появилась мысль, которая показалась перспективной, и при этом несложной в реализации. Думаю, со временем и идеи использования появятся.
Flasher wrote:

Он имеет в виду, если ставить кавычки вместо значения.

Получится пустая переменная. Ее можно проверить в условии как Var = "".
Back to top
View user's profile Send private message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Wed Jan 02, 2013 14:19    Post subject: Reply with quote

Loopback wrote:

Я не могу сейчас сходу придумать такие примеры, однако ввиду универсальности решения, применение наверняка найдется.

ладно, давай попробуем так: по идее, функция ProcessExecGetOutput запускает консольную программу, и выдает в переменную результат её работы, то есть её вывод.
можешь доработать такой пример (получение версии Windows)?:
Code:
ProcessExecGetOutput /EV COMMANDER_WINVER cmd.exe '/c ver'


Добавлено спустя 6 минут:

Loopback wrote:

Получится пустая переменная. Ее можно проверить в условии как Var = "".

а вот как бы не так:
ключ из ini-файла
Code:
WLanProfile=


Начало кода из конфига Autorun:
Code:

IniRead WLanProfile "%COMMANDER_PATH%\wincmd.ini" "WLan" "WLanProfile" ""
If %WLanProfile% = "" Then
...

запуск ТС:
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
Goto page Previous  1, 2, 3 ... 44, 45, 46 ... 131, 132, 133  Next
Page 45 of 133

 
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