请注意,虽然这篇文章询问了coffeescript.cmd,但我不认为答案与它有任何关系,但更多的是误解了powershell的工作系统。
所以编译和观看coffeescript我可以打电话
> coffee.cmd -cw ./scripts
将启动coffeescript流程。由于w
监视标志,进程将保持打开状态并重新编译任何更改,直到我 Ctrl + c 。
我想要的是开始这个过程,但让它在后台运行,以便我可以继续使用我的控制台(是的,我知道我可以有多个控制台)。理想情况下,该作业的任何输出都会在发生时推送到我的控制台。
所以我认为我可以做到这一点
> start-job { coffee.cmd -cw .\scripts }
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
3 Job3 BackgroundJob Running True localhost coffee.cmd -cw .\scripts
不幸的是,似乎a)吞下所有输出,更重要的是b)立即完成并且不留下看我的目录
宽:\浪涌\鬼>得到-工作
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
3 Job3 BackgroundJob Completed False localhost coffee.cmd -cw .\scripts
请注意,我知道this post,但正如我所证明的那样,即使我Recieve-Job
,我似乎也无法保持开放。
发生了什么事?工作不是正确的工具吗?启动在后台等待的进程的正确方法是什么?如何将输出重定向到我的控制台。
答案 0 :(得分:1)
由于@MickyBalladelli的评论,我设法弄清了部分内容。就是这个
start-job { Get-Location } | Receive-Job -Wait
返回〜/ Documents。啊哈!所以相对路径不起作用。当我做的时候
Start-Job { coffee.cmd -cw w:\absoltue\path\to\scripts }
作业 仍在运行,并将在后台编译内容。当然结果(compliation成功和错误)不会流式传输到我的控制台。为此,我需要明确调用Get-Job | Receive-Job
。
这很令人讨厌,但距离我真正想要的东西又近了一步。