2017-06-30 90 views
1

这个问题很简单,但似乎我有Schtasks的哲学问题。避免重复Schtasks在PowerSehll

目标:

下载在线流仅为(使用FFMPEG)时,我最喜欢的节目是流每天2小时我们可以给出一个开始日期和结束日期,但如果它无限期地每天运行,我很好。

如何:

计划,网上程序启动时运行的PowerShell脚本任务;当然这是我想出来的;随时提出建议,如果你有更好的想法(也许使用Python)。

我的解决方案:

schtasks /Create /SC DAILY /TN Task1 /TR "powershell.exe .\dl.ps1" /ST 18:00 /DU 02:00 

其中dl.ps1包含:

ffmpeg -i "rtmp://185.23.131.187/live/flv:tv3 live=1" -c copy .\fileName.flv 

问题:

这个任务后10 minut重演es ---这是默认的重复时间。

问题

如何实现这一目标,避免重复?也许我对持续时间,/ DU和重复间隔/ RI的看法是错误的。

奖金问题

我想改名字每个记录的文件,即文件名的基础上,记录的一天。我如何在PowerShell中执行此操作?

我看到了一个需要将任务导出到XML文件的解决方案。如果可能的话,我希望能够想出更优雅的解决方案。

+0

恕我直言,你应该解析某个地方的频道时间表,然后用许多“一次”触发器设置一个任务并设置该任务的到期日期。一旦到期,你会运行另一个(反复出现的最有可能的)任务来完成相同的工作。'Get-Help New-ScheduledTaskTrigger'(不确定此cmdlet的PS/OS版本,很可能在8.1版本中可用,但不会在空气中) – Vesper

+0

谢谢。你介绍一下如何解析频道时间表的第一部分吗?我正在运行Windows 10. – Ali

回答

1

而不是使用/DU的持续时间(根据说明文字,迫使默认10分钟重复间隔)使用/ET的结束时间和/K末时间终止任务:

schtasks /Create /SC DAILY /TN Task1 /TR "powershell.exe .\dl.ps1" /ST 18:00 /ET 20:00 /K 

要改变基于拍摄日期的文件名,你可以在你的PowerShell脚本通过一个子表达式$()使用Get-Date-Format参数是这样的:

ffmpeg -i "rtmp://185.23.131.187/live/flv:tv3 live=1" -c copy ".\$(get-date -format 'dd-MM-yyyy').flv" 
+0

谢谢。您建议的任务在计划时刻开始运行。我想不出为什么会发生这种情况。有任何想法吗? – Ali

+0

尝试在时间周围加上引号 –

+0

它现在是否已经超过了指定的开始时间,并且在结束时间之前? –