2017-06-30 3 views
1

La question est simple, mais il semble que j'ai des problèmes avec la philosophie de Schtasks.Évitez la répétition dans Schtasks dans PowerSehll

Objectif:

Téléchargez un flux en ligne seulement pendant 2 heures tous les jours (en utilisant FFMPEG) lorsque mon programme préféré est en streaming; nous pouvons donner une date de début et de fin, mais je vais bien si ça marche tous les jours indéfiniment.

Comment:

Planifier une tâche qui exécute un script PowerShell lorsque le programme en ligne commence; bien sûr c'est ce que je suis venu avec; N'hésitez pas à faire des suggestions, si vous avez de meilleures idées (peut-être en utilisant Python).

Ma solution:

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

où le dl.ps1 contient:

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

Problème:

Cette tâche se répète après 10 minut es --- qui est le temps de répétition par défaut.

Question

Comment puis-je atteindre l'objectif et éviter la répétition? Peut-être mon état d'esprit sur la durée,/DU, et l'intervalle de répétition,/RI, est faux.

Bonus question

Je voudrais changer le nom de chaque fichier enregistré, à savoir, fileName, en fonction du jour de l'enregistrement. Comment est-ce que je fais cela dans PowerShell?

J'ai vu une solution qui nécessite l'exportation de la tâche dans un fichier XML. J'espérais que nous pourrions trouver une solution plus élégante, si possible.

+0

À mon humble avis, vous devez analyser le calendrier des canaux quelque part, puis configurer une tâche avec de nombreux déclencheurs de "une fois" et définir la date d'expiration pour cette tâche. Une fois que cela expire, vous exécutez une autre tâche (récurrente la plus probable) qui ferait le même travail.'Get-Help New-ScheduledTaskTrigger' (je ne suis pas sûr de la version de PS/OS pour cette applet de commande, très probablement disponible en version 8.1 mais pas en version plus aérée) – Vesper

+0

Merci. Pourriez-vous élaborer la première partie sur la façon d'analyser l'horaire des chaînes? Je cours Windows 10. – Ali

Répondre

1

Plutôt que d'utiliser /DU pour une durée (qui, selon le texte d'aide force un défaut Intervalle de répétition de 10 minutes) utiliser /ET pour l'heure de fin et /K de mettre fin à la tâche à l'heure de fin:

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

Pour changer le nom du fichier en fonction de la date d'enregistrement, vous pouvez utiliser Get-Date via une sous-expression $() dans votre script PowerShell avec le paramètre -Format comme ceci:

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

Merci. La tâche que vous avez proposée commence à s'exécuter au moment où elle est planifiée. Je ne peux pas imaginer pourquoi cela arrive. Des idées? – Ali

+0

Essayez de mettre des guillemets autour des temps –

+0

Est-ce que c'est peut-être déjà passé l'heure de début spécifiée où vous êtes mais avant l'heure de fin? –