Каталог работы PowerShell начинать-задания

Существует ли способ указать рабочий каталог к команде Start-Job?

Пример использования:

Я нахожусь в каталоге, и я хочу открыть использование файла Emacs для редактирования. Если я сделаю это непосредственно, то это заблокирует PowerShell, пока я не закрою Emacs. Но использование Начинать-задания пытается выполнить Emacs из моего корневого каталога, таким образом имение Emacs открывает новый файл вместо того, который я хотел.

Я пытался указать полный путь с помощью $pwd, но переменные в блоке сценария не разрешены, пока они не выполняются в контексте Начинать-задания. Таким образом, некоторым способом вызвать разрешение переменных в контексте оболочки также был бы приемлемый ответ на это.

Так, вот то, что я попробовал, только для полноты:

Start-Job { emacs RandomFile.txt }
Start-Job { emacs "$pwd/RandomFile.txt" }
25
задан JasonMArcher 12 May 2011 в 16:12
поделиться

2 ответа

Возможным решением будет создание "kicker-script":

Start-Job -filepath .\emacs.ps1 -ArgumentList $workingdir, "RandomFile.txt"

Ваш скрипт будет выглядеть так:

Set-Location $args[0]
emacs $args[1]

Надеюсь, это поможет.

16
ответ дан 28 November 2019 в 18:21
поделиться

Для полноты картины, вот последний сценарий, который я реализовал на основе ответа Филбурта в стиле вики-сообщества:

function Start-Emacs ( [string]$file )
{
    Start-Job -ArgumentList "$pwd\$file" { emacs $args[0] }
}
2
ответ дан 28 November 2019 в 18:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: