Majickal
Majickal

Reputation: 176

Dynamically rename a command prompt window title via Powershell

I have a powershell script which launches a ffmpeg command

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

This spawns a command prompt window. I would like to rename the title of the command prompt window and be able to do that for every iteration I run of the ffmpeg command.

I have seen how to rename the title of the window directly via the command prompt and how to rename the powershell window title. I cannot find any information pertaining to powershell being able to dynamically assign a new title to the command prompt window when created.

Any assistance/pointers would be greatly appreciated.

Upvotes: 0

Views: 1273

Answers (2)

Doug Maurer
Doug Maurer

Reputation: 8868

Once you pass your code off to the cmd instance you started it would be up to the running process to update it's title window (without getting into pinvoke/Windows API calls.) If ffmpeg.exe provides you with the current file as it's running then simply use that to set the title. If not, then it's most likely you'd need to adjust your commands to first get the list of files then iterate over those files setting the title and running the ffmpeg command. Here's a small example of letting the commands set the title.

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

If you are instead referring to each time you do Start-Process then simply set the title before the other commands.

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

The & character instructs CMD to run the first command AND the next command. && says run the first command and only run the second if the first succeeds. || says run first command and if it fails run second.

By the way, unless you use the -Passthru on Start-Process then it is not collecting anything. With the passthru parameter it would collect a System.Diagnostics.Process object. That could be used for tracking, closing, etc.

Upvotes: 2

Peter the Automator
Peter the Automator

Reputation: 918

enter image description here

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

enter image description here

Something like this?

Upvotes: 0

Related Questions