使用Windows PowerShell脚本并行编译LaTeX文件

时间:2014-04-11 02:50:17

标签: loops powershell parallel-processing latex

我可以按顺序编译顺序目录中的所有LaTeX文件,如下所示:

Get-ChildItem -include *.tex -name | ForEach-Object {
    lualatex --interaction=nonstopmode --output-directory=$pwd $_ } }

我想一次编译 parallel,两个文件。不幸的是,我对Windows PowerShell非常陌生,我似乎无法找到一个好方法。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用Start-Process cmdlet异步启动新进程。如果未指定-Wait参数,则该过程将异步执行。

Get-ChildItem -Path $PSScriptRoot\* -Include *.tex | `
ForEach-Object -Process { `
    Start-Process -FilePath lualatex -ArgumentList ('lualatex --interaction=nonstopmode --output-directory={1} "{0}"' -f $PSItem.FullName, $pwd); `
    };

我没有测试过这段代码,因为我没有lualatex可执行文件,但是这应该会让你知道它是如何工作的。

答案 1 :(得分:1)

这个答案归功于@RomanKuzmin和SplitPipeline模块。

Get-ChildItem -Include *.tex | SplitPipeline -Count 2 {
    process {
        lualatex --interaction=nonstopmode --output-directory=$( $_.DirectoryName ) $_.FullName } }