Do you really have 100 scripts to run? :-)

Anyway, you can probably do something like this with power shell.

Below is something I created last year, perhaps it can serve as inspiration at least.

Here basically a parallell block will run many commands in parallell (duh!), but it won´t continue with the next parallell block of tasks until every process in the previos parallell block has finished.

Code:
#Add parameter for index (replace=)
#Filter out less trades for OOS, to much garbage currently

Workflow Zorro-Workflow
{


    InlineScript { 
        if([System.IO.File]::Exists("Y:ZorroLogGenerated.csv")) {
            Remove-Item Y:ZorroLogGenerated.csv
        }
        if([System.IO.File]::Exists("Y:ZorroLogGenSortedTest.csv")){
            Remove-Item Y:ZorroLogGenSortedTest.csv
        }
        if([System.IO.File]::Exists("Y:ZorroLogGeneratedFactoryResult.csv")){
            Move-Item -Path Y:ZorroLogGeneratedFactoryResult.csv -Destination Y:ZorroLogGeneratedFactoryResult_$(get-date -f yyyy-MM-dd_HHmm).csv
        }
    }
    
    #Parameters to Zorro are in order: BarPeriod, StopMultiplier, TpMultiplier, LifeTime
    parallel
    {
       InlineScript { 
            Y:ZorroZorro.exe -train -a EUR/USD -d SHORT -i 60 -i 0 -i 0 -i 5 MiningRunner | Out-Null 
            Write-Host "Finished first batch" 
       }
       

       InlineScript { 
            Y:ZorroZorro.exe -train -a EUR/USD -d SHORT -i 60 -i 0 -i 0 -i 10 MiningRunner| Out-Null 
            Write-Host "Finished second batch" 
       }

       InlineScript { 
            Y:ZorroZorro.exe -train -a EUR/USD -d SHORT -i 60 -i 0 -i 0 -i 15 MiningRunner| Out-Null 
            Write-Host "Finished third batch" 
       }
    }
    
    
    parallel
    {    
       InlineScript { 
            Y:ZorroZorro.exe -train -a EUR/USD -d SHORT -i 60 -i 4 -i 2 -i 5 MiningRunner| Out-Null 
            Write-Host "Finished fourth batch" 
       }

       InlineScript { 
            Y:ZorroZorro.exe -train -a EUR/USD -d SHORT -i 60 -i 4 -i 2 -i 10 MiningRunner| Out-Null 
            Write-Host "Finished fifth batch" 
       }

       InlineScript { 
            Y:ZorroZorro.exe -train -a EUR/USD -d SHORT -i 60 -i 4 -i 2 -i 15 MiningRunner| Out-Null 
            Write-Host "Finished sixth batch" 
       }
       

    }       

    parallel
    {    
       InlineScript { 
            Y:ZorroZorro.exe -train -a EUR/USD -d SHORT -i 60 -i 4 -i 4 -i 5 MiningRunner| Out-Null 
            Write-Host "Finished seventh batch" 
       }

       InlineScript { 
            Y:ZorroZorro.exe -train -a EUR/USD -d SHORT -i 60 -i 4 -i 4 -i 10 MiningRunner| Out-Null 
            Write-Host "Finished eighth batch" 
       }

       InlineScript { 
            Y:ZorroZorro.exe -train -a EUR/USD -d SHORT -i 60 -i 4 -i 4 -i 15 MiningRunner| Out-Null 
            Write-Host "Finished ninth batch" 
       }
       

    }  
    

    InlineScript {
        Write-Host "Starting OOS testing"
        Import-Csv Y:ZorroLogGenerated.csv -delimiter "`t" | sort ProfitFactor -Descending  | Export-Csv -Path Y:ZorroLogGenSortedTest.csv -NoTypeInformation
        $csv = Import-Csv Y:ZorroLogGenSortedTest.csv | where {$_.Total -notlike '-*'}

        #Create result file and add headers
        $header = "Asset`tBarPeriod`tStopMultiplier`tTakeProfitMultiplier`tLifeTime`tTrades`tTotal`tWinPerTrade`tProfitFactor`te-Ratio`tStrategy"
        $header | Set-Content 'Y:ZorroLogGeneratedFactoryResult.csv'

        $totalLines = $csv.Count

        #TODO: Add random filename to be able to run OOS tests in parallell
        #probably using #([System.IO.Path]::GetRandomFileName()).Split(�.�)[0]
        foreach ($line in $csv)
        {
            $lineIndex = $csv.IndexOf($line)+1
            $asset = $line.Asset
            $asset = $asset.replace('/','')

            Write-Host "Running OOS for system $lineIndex of $totalLines"
            (Get-Content 'Y:ZorroStrategyGenFactoryTemplate.c') -replace 'replaceMe', $line.Strategy | Set-Content 'Y:ZorroStrategyGenFactoryTest.c'
            Y:ZorroZorro.exe -run -a $line.Asset -d SHORT -i $line.BarPeriod -i $line.StopMultiplier -i $line.TakeProfitMultiplier -i $line.LifeTime GenFactoryTest | Out-Null
            Move-Item -Path Y:ZorroLogGenFactoryTest_$asset.png -Destination Y:ZorroLogGenPlotsGenFactoryTest_$asset_$lineIndex.png
        } 
        Write-Host "OOS testing completed, all done!"
    }
}