FarCall — задание переменных окружения пакетным файлом

Здесь можно обсудить ваш любимый плагин.
MDM
Posts: 88
Joined: Fri 02 Dec, 2005 20:47
Location: Москва
Has thanked: 4 times
Been thanked: 2 times

Re: FarCall — задание переменных окружения пакетным файлом

Post by MDM » Fri 18 Sep, 2009 13:19

Latest post of the previous page:

а фар такое как обрабатывает?
Какое? Он же не сам обрабатывает батники, а запускает новый экземпляр cmd и ждет его завершения. Или не так?
Из-за того, что переменные, созданы в другой сессии, он не может получить их значения, т.к. область видимости незарегистрированных в системе переменных ограничена текущим процессом cmd. Плагин позволяет избежать это ограничение, но не видит переменные из области setlocal батника.

Code: Select all

@echo off
set test_1=test_1
setlocal
set test_2=test_2
Если запустить `call:this.cmd`, а потом выполнить `set test_`, то на выходе получим только `test_1=test_1`

User avatar
t-rex
Страшный и ужасный
Posts: 4903
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 3 times
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by t-rex » Fri 18 Sep, 2009 13:25

Ну так это же правильно, почему вдруг должно быть по другому?

MDM
Posts: 88
Joined: Fri 02 Dec, 2005 20:47
Location: Москва
Has thanked: 4 times
Been thanked: 2 times

Re: FarCall — задание переменных окружения пакетным файлом

Post by MDM » Fri 18 Sep, 2009 13:45

Ну так это же правильно, почему вдруг должно быть по другому?
Я поэтому и написал "Хотя с другой стороны.." Т.е здесь нет оптимального решения. Если, допустим, нужна одна результирующая переменная, но чтоб ее получить в ходе выполнения батника создаются еще 99, то они потом будут висеть в фаре, хотя совсем не нужны. Но их можно упрятать в setlocal. А в другом случае может наоборот потребоваться переменная из области setlocal. Может есть возможность добавить настройки к плагину?

User avatar
t-rex
Страшный и ужасный
Posts: 4903
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 3 times
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by t-rex » Fri 18 Sep, 2009 13:48

Плагин тут вообще не причём, он переменные в setlocal вообще не видит, для этого setlocal и придумали то, так должно работать и никаких настроек и выкрутасов не надо.

MDM
Posts: 88
Joined: Fri 02 Dec, 2005 20:47
Location: Москва
Has thanked: 4 times
Been thanked: 2 times

Re: FarCall — задание переменных окружения пакетным файлом

Post by MDM » Fri 18 Sep, 2009 13:56

он переменные в setlocal вообще не видит, для этого setlocal и придумали то
Иногда без сетлокал переменную и не получишь.

User avatar
t-rex
Страшный и ужасный
Posts: 4903
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 3 times
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by t-rex » Fri 18 Sep, 2009 14:02

Сергей, я тут посмотрел твой код и подумалось, не проще ли просто запустить процесс а потом когда он вышел вычитать блок env из его памяти перед закрытием его handle - или в этот момент там уже пусто (хэндл то ещё открыт, может оно всё ещё там не)?

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by hoopoe » Thu 01 Oct, 2009 08:51

закинул новую версию... там фикс для фара билда 1145+

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by ctapmex » Sat 19 Feb, 2011 07:38

можно надеяться на 64 битную версию? или сейчас есть альтернативы плагину?

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by hoopoe » Fri 18 Mar, 2011 15:32

можно, конечно... только что-то она падает... причем валится внутри фара если в функе GetPluginInfoW указать префикс вызова плуга... собираю VS2010... может кто-нить что-нить подскажет?


User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by hoopoe » Fri 18 Mar, 2011 16:48

1 байт

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by ctapmex » Fri 18 Mar, 2011 17:48

hoopoe,
мы ж с тобой в личке все решили . я просто тут раньше вопрос написал.
несобирается из-за - в настройках Struct Member Alignment. если выставить в default , все взлетает.
плюс - смена API. FCTL_GETCURRENTDIRECTORY - еще в 1180 удалили.

я поправил версию, сам пользуюсь, да все руки не доходят выложить.
по уму, раз ты нигде исходники не хранишь, их кинуть бы на какой-нибудь google-code , рядом с другими плагинами

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by hoopoe » Sat 19 Mar, 2011 17:32

да я просто фар поставил на 64-bit... far call отвалился накер... вот и занялся портированием... ты б сырцы-то новые выложил :)

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by ctapmex » Sat 19 Mar, 2011 19:58

выкладывать в общем то нечего, я только до работоспособного варианта довел под far2
строку

Code: Select all

InfoW.Control(INVALID_HANDLE_VALUE, W::FCTL_GETCURRENTDIRECTORY, CUR_DIR_SIZE, (long*)curdir);
заменяешь на

Code: Select all

FSFW.GetCurrentDirectory(CUR_DIR_SIZE,curdir);
и в настройках Struct Member Alignment выставить в default

после этого соберется и будет работать на far2.

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by hoopoe » Mon 21 Mar, 2011 06:03

вот, вроде должно работать на Far 64... там сырцы и бинарики... собирал десятой студией (что под руку попалось :) )

2sonar: у мну есть сурс контроль клиент только svn... так шо если надумаешь сырцы публиковать - то все, что не svn (ну еще cvs можно попробовать) - пойдет через твои руки 8)
Attachments
FarCall_64_test.7z
(53.12 KiB) Downloaded 113 times

User avatar
hoopoe
Posts: 263
Joined: Mon 28 Mar, 2005 07:44
Location: Нежный Новгород
Has thanked: 1 time
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by hoopoe » Thu 10 Jan, 2013 11:57

hi всем...

у меня вдруг дошли руки до третьего фара :)

в общем в аттаче сырцы и бинарник FarCall для третьего фара, правда пока только 32-битная версия...
если кто-нить им еще пользуется - попробуйте погонять...

пасиб
Attachments
FarCall.7z
FarCall for FAR 3, 32-bit, test build
(23.62 KiB) Downloaded 141 times

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: FarCall — задание переменных окружения пакетным файлом

Post by NightRoman » Thu 10 Jan, 2013 12:36

Раз зашел разговор. Мой вариант с похожей функциональностью, но для PowerShell и FarNet+PowerShellFar, скрипт Invoke-Environment.ps1, немного переделан и переехал сюда https://github.com/nightroman/PowerShelf. Там я и еще кой-какие полезные скрипты подкапливаю (независимые от Фара, но некоторые и в Фаре полезны).

Post Reply

Return to “Обсуждение плагинов”