@ECHO OFF ::1.0 Worked on Vista and 7 ::1.1 Fixed IF statement for XP ::1.5 Fixed Prefix getting added to command prompt when run as Administator in UAC environments ::Works on XP, 2003, Vista, 7, Server 2008, Server 2008 R2 ::ver 1.5 ::Brian Williams SETLOCAL ENABLEEXTENSIONS SETLOCAL ENABLEDELAYEDEXPANSION ::Let user note the current title PAUSE ::Get the command that initiated this script SET _CMD=%0 CALL :GET-TITLE %_CMD% _PID _TITLE _DCLICK ::Output CMD, PID, and starting TITLE, pause for verificaiton ECHO Command: %_CMD% ECHO PID: %_PID% ECHO Title: %_TITLE% ECHO DoubleClick: %_DCLICK% ::We were Doubclicked, pause to allow user to see results IF "%_DCLICK%" EQU "YES" PAUSE GOTO :END :Get-Title SET _CMD=%1 SET _RETURNPID=%2 SET _RETURNTitle=%3 SET _RETURNDoubleClick=%4 ::Use tasklist to get a list of cmd.exe's and set variables where PIDs equal their titles FOR /F "TOKENS=2,10 DELIMS=," %%A IN ('TASKLIST /V /FI "IMAGENAME EQ CMD.EXE" /FO CSV /NH') DO SET %%~A=%%~B ::Create a random number and a static title based on that random number SET _RND=%RANDOM% TITLE FIND ME %_RND% ::Cycle through list of titles until we locate our PID, now we know our PID and we have the original title stored ::this means we also know our own title FOR /F "TOKENS=2,9,* DELIMS=," %%A IN ('TASKLIST /V /FI "IMAGENAME EQ CMD.EXE" /FO CSV /NH') DO ( ECHO %%C|FIND /I "FIND ME %_RND%">NUL && SET _MYPID=%%~A ) SET _MYTITLE=!%_MYPID%! ::Get Length of our CMD and our Title, subtract 3 because of the CR LF chars that are in the output. ::NOTE* I did not come up with this method to get lengths, this is something I found on the internet in forums. FOR /F "TOKENS=1 DELIMS=:" %%A IN ('^(ECHO %_CMD% ^&ECHO.^)^|FINDSTR /O ".*"') DO SET /A _CMDLEN=%%A - 3 FOR /F "TOKENS=1 DELIMS=:" %%A IN ('^(ECHO %_MYTITLE% ^&ECHO.^)^|FINDSTR /O ".*"') DO SET /A _TITLELEN=%%A - 3 ::The title may contain our script name or it may not depending on whether it was double clicked or run in a cmd.exe window ::Pull out the possible CMD out of the title SET _SUFFIX=!_MYTITLE:~-%_CMDLEN%! ::Check to see if the chars pulled from the title match our cmd, if they do, get rid of that part ::If our command was double-clicked, we already have the TITLE, if we were run at the command prompt, we'll get rid of ::our command out of the title leaving what we started with. ::I have no idea why, but MYTITLE wouldn't expand in the ELSE section of the IF statement under XP only ::Setting to variable to something else allowed it to work, dunno.... SET _TITLEFORXP=%_MYTITLE% SET /A _CMDLEN=%_CMDLEN% + 3 IF "%_SUFFIX%" EQU "%_CMD%" ( SET _MYTITLE=!_MYTITLE:~0,-%_CMDLEN%! SET /A _TITLELEN=%_TITLELEN% - %_CMDLEN% SET _DOUBLECLICK=NO TITLE !_MYTITLE! ) Else ( SET _DOUBLECLICK=YES TITLE %_TITLEFORXP% SET %_RETURNPID%=%_MYPID% SET %_RETURNTITLE%=%_TITLEFORXP% SET %_RETURNDoubleClick%=!_DOUBLECLICK! GOTO :EOF ) ::Ensure "Administrator: " is not getting added to the Title FOR /F "TOKENS=9,* DELIMS=," %%A IN ('TASKLIST /V /FI "PID EQ %_MYPID%%" /FO CSV /NH') DO ( FOR /F "TOKENS=1 DELIMS=:" %%C IN ('^(ECHO %%~B ^&ECHO.^)^|FINDSTR /O ".*"') DO SET /A _CURTITLELEN=%%C-3 ) IF "%_CURTITLELEN%" NEQ "%_TITLELEN%" (SET /A _DIFF=%_CURTITLELEN% - %_TITLELEN% -1) IF "%_CURTITLELEN%" NEQ "%_TITLELEN%" (SET _MYTITLE=!_MYTITLE:~%_DIFF%!) TITLE %_MYTITLE% SET %_RETURNPID%=%_MYPID% SET %_RETURNTITLE%=%_MYTITLE% SET %_RETURNDOUBLECLICK%=%_DOUBLECLICK% GOTO :EOF :END