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

Здесь можно обсудить ваш любимый плагин.
User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

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

Post by NightRoman » Thu 03 Sep, 2009 16:13

Обсуждаем плагин FarCall.

hoopoe, надеюсь, будет не в обиде, если я предложу альтернативу для тех, кто пользует PowerShellFar. Вот такой скрипт, запущенный в PowerShellFar с параметром пути батника, импортирует переменные окружения в процесс Фара:

Code: Select all

## Invoke a specified cmd command and propagate its environment variables
## *) for simple configuration batch files, e.g. vsvars32.bat
## *) stdout of a command is suppressed

param ([string]$Command = $(throw 'Missed -Command'))

cmd /c "$Command > nul && set" | .{process{
	if ($_ -match '^([^=]+)=(.*)') {
		Set-Content "env:\$($matches[1])" $matches[2]
	}
}}
Могу включить этот скрипт в поставку PowerShellFar, если будут такие пожелания.

P.S. Это обычный PowerShell скрипт, то есть может быть полезным и вне Фара, в PS консоли или в ISE, где угодно, в общем.
Last edited by NightRoman on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Исправлен заголовок Темы

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

Re: FarCall

Post by hoopoe » Fri 04 Sep, 2009 10:16

да на здоровье...

я этот far call на коленке сделал.. была потребность... а Карбазол сказал шо полезный плуг... вот и выложил... :oops:

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 » Fri 04 Sep, 2009 10:42

Не, задачка это полезная по любому (а иначе чего я держу этот PowerShell скрипт наготове?). Просто если есть PowerShellFar, то дешевле скриптом. Ну а если нет (у большинства), то плуг - самое то.

Tonal
Posts: 73
Joined: Sat 27 Oct, 2007 14:42
Location: Новосибирск
Contact:

Re: FarCall

Post by Tonal » Fri 04 Sep, 2009 11:23

Классно, потестим! :)
Буддизм Алмазного Пути, линия Карма Кагью.

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

Re: FarCall

Post by hoopoe » Fri 04 Sep, 2009 11:27

да, до кучи... для чего создавалось: у мну на компе (по роду деятельности положено) живет одновременно несколько студий вижуальных (VS6, 2003, 2005), да еще и немного версий SDK от билли... у каждой из них есть свои батники со всякими переменными... вот я и гоняю инфу из этих батников в фар через плуг... просто воткнул в меню F2 запуск конфигов через "call:" и радуюсь жизни :D

User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: FarCall

Post by Andrey Budko » Fri 04 Sep, 2009 11:38

hoopoe wrote:да, до кучи... для чего создавалось: у мну на компе (по роду деятельности положено) живет одновременно несколько студий вижуальных (VS6, 2003, 2005), да еще и немного версий SDK от билли... у каждой из них есть свои батники со всякими переменными... вот я и гоняю инфу из этих батников в фар через плуг... просто воткнул в меню F2 запуск конфигов через "call:" и радуюсь жизни :D
Не понимаю зачем все это. У меня тоже студии 6, 2005 и 2008. В чем проблема-то? Каждая студия знает, где лежат её батники. Зачем инфа из них в фаре, если ты не извращенец? А если извращенец, то чем плох батник, в котором вверху делаешь call батника с нужной студии, а дальше cl.exe или что там у тебя.

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

Re: FarCall

Post by hoopoe » Fri 04 Sep, 2009 11:46

это нужно если у тебя нестандартная билдовая система... у мну специфика такая, шо собственно средой (IDE) я не пользуюсь для построения софтины... там вариации на тему makefile-ов... и фар в связке с конманом и этим плугом позволяет все эти окружения компактно удерживать в одном окне... удобно...

Ann
Posts: 182
Joined: Tue 26 Jun, 2007 11:05

Re: FarCall

Post by Ann » Fri 04 Sep, 2009 19:24

hoopoe wrote:я этот far call на коленке сделал.. была потребность... а Карбазол сказал шо полезный плуг... вот и выложил...
Вот и спасибочки: при синхронизации оперативно менять ссылки на целевые папки оченно помогает! Особенно здорово, что практически визуализирует процесс смены, и поэтому меньше путаешься, ориентируешься по наименованиям батников, меньше нужно держать в голове...
Примите, пожалуйста, благодарность! Image

Shmuel
Posts: 5908
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

Re: FarCall

Post by Shmuel » Sat 12 Sep, 2009 14:01

Есть утечка 100 тысяч байт при каждом вызове плагина - не освобождается batchstr.

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: FarCall

Post by Maximus5 » Sat 12 Sep, 2009 18:00

FAR2 build 1108. Вызов через префикс глючит - не восстанавливаются панели фара.

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

Re: FarCall

Post by hoopoe » Thu 17 Sep, 2009 05:32

Ann wrote:при синхронизации оперативно менять ссылки на целевые папки оченно помогает! Особенно здорово, что практически визуализирует процесс смены, и поэтому меньше путаешься, ориентируешься по наименованиям батников, меньше нужно держать в голове...
Примите, пожалуйста, благодарность! Image
честно говоря я уже 2 раза по 150 принял, но как-то все равно не понял ничего :oops:

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

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

Post by hoopoe » Thu 17 Sep, 2009 05:58

вроде поправил :)
смотрим, тестируем
http://forum.farmanager.com/viewtopic.p ... 144#p51144

Ann
Posts: 182
Joined: Tue 26 Jun, 2007 11:05

Re: FarCall

Post by Ann » Thu 17 Sep, 2009 06:51

Иными словами, с плагином лучше, чем без него.
Вроде бы простой подход, а очень удобно.

Поэтому просто Большое Спасибо! Image

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

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

Post by MDM » Thu 17 Sep, 2009 16:20

С setlocal в батнике не работает. Конечно это ожидаемо, но было бы не плохо. Хотя с другой стороны при создании большого кол-ва переменных в батнике... вывод set будет на 100 more.

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 Sep, 2009 07:29

а фар такое как обрабатывает?

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

а фар такое как обрабатывает?
Какое? Он же не сам обрабатывает батники, а запускает новый экземпляр 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`

Post Reply

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