J'ai un script PowerShell qui lance une commande ffmpeg

$process = Start-Process -FilePath "cmd" -ArgumentList "/c c:\bin\ffmpeg\bin\ffmpeg.exe -rtsp_transport tcp -i........

Cela génère une fenêtre d'invite de commande. Je voudrais renommer le titre de la fenêtre d'invite de commande et pouvoir le faire pour chaque itération que j'exécute de la commande ffmpeg.

J'ai vu comment renommer le titre de la fenêtre directement via l'invite de commande et comment renommer le titre de la fenêtre PowerShell. Je ne trouve aucune information concernant PowerShell pouvant attribuer dynamiquement un nouveau titre à la fenêtre d'invite de commande lors de sa création.

Toute aide / pointeurs serait grandement appréciée.

0
Majickal 24 sept. 2020 à 06:58

2 réponses

Meilleure réponse

Une fois que vous passez votre code à l'instance cmd que vous avez démarrée, il appartiendra au processus en cours de mettre à jour sa fenêtre de titre (sans entrer dans les appels d'API pinvoke / Windows.) Si ffmpeg.exe vous fournit le fichier actuel pendant son exécution, alors utilisez simplement cela pour définir le titre. Sinon, il est fort probable que vous deviez ajuster vos commandes pour obtenir d'abord la liste des fichiers, puis parcourir ces fichiers en définissant le titre et en exécutant la commande ffmpeg. Voici un petit exemple de laisser les commandes définir le titre.

Start-Process -FilePath "cmd" -ArgumentList "/c for /l %a in (1,1,10) do (title %a & cls & timeout 3)"

Si vous faites référence à chaque fois que vous effectuez Start-Process, définissez simplement le titre avant les autres commandes.

Start-Process -FilePath "cmd" -ArgumentList "/c title ffmpeg command running & c:\bin\ffmpeg\bin\ffmpeg.exe -rtsp_transport tcp -i........"

Le caractère & indique à CMD d'exécuter la première commande ET la commande suivante. && dit exécuter la première commande et exécuter la seconde uniquement si la première réussit. || dit exécuter la première commande et si elle échoue, exécutez la deuxième.

Au fait, à moins que vous n'utilisiez -Passthru sur Start-Process, il ne collecte rien. Avec le paramètre passthru, il collecterait un objet System.Diagnostics.Process. Cela pourrait être utilisé pour le suivi, la fermeture, etc.

2
Doug Maurer 24 sept. 2020 à 13:21

enter image description here

$host.ui.RawUI.WindowTitle = "Changed Title"

enter image description here

Quelque chose comme ça?

0
Peter the Automator 24 sept. 2020 à 06:23