Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I set a title that starts with comma, semicolon or equal sign?

Obviously it is possible to set title that contains cmd's standard delimiters but through TITLE command looks impossible to set a title that starts with a delimiter.

It is possible to create a new instance of CMD with such title:

start "==" cmd.exe

but not possible for the same instance.

It is possible also with .NET and Console.Title property but when it's called from batch file the tile lasts as long as the compiled exe runs:

@if (@X)==(@Y) @end /* JScript comment
@echo off
setlocal

for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d  /o:-n "%SystemRoot%\Microsoft.NET\Framework\*jsc.exe"') do (
   set "jsc=%%v"
)

if not defined jsc (
        echo !!! Installation of .NET framework needed !!!
        pause
        exit /b 3
)

rem echo %jsc%
::if not exist "%~n0.exe" (
        del /q /f %~n0.exe
        call "%jsc%" /nologo /out:"%~n0.exe" "%~dpsfnx0"
::)

call %~n0.exe %*

endlocal & exit  /b %errorlevel%


*/

import System;

var arguments:String[] = Environment.GetCommandLineArgs();
//Console.WriteLine(Console.Title);
if (arguments.length>0){
         Console.Title=arguments[1];
}
//Console.WriteLine(Console.Title); 

(Probably is possible through code injection)

Is there a windows 'native' way?

like image 850
npocmaka Avatar asked Feb 11 '23 04:02

npocmaka


2 Answers

With Win7 x64, I can produce it when a linefeed is in front of the problematic characters.

@echo off
setlocal EnableDelayedExpansion
set LF=^



title !LF!,bc

In Win7 there seems no difference in the height or position of the title when LF is used.

Tested with

cmd /V:on
@for /L %n in (1 1 1111) do @(title !LF!=Hello& title +Hello)

But the current program is shown for the time it's running in the title, so the TITLE command itself produces a flicker.

like image 111
jeb Avatar answered Feb 12 '23 16:02

jeb


I found another way:

title ^A,string

where ^A is produced by entering 0 1 while holding down the ALT-key ( <pressALT><0><1><releaseALT> ).

You can get it into a file with echo ^A>>batch.bat and then moving it to the correct position with notepad (it's not shown in notepad, like a whitespace; broader than a space, but not as broad as a TAB)

like image 29
Stephan Avatar answered Feb 12 '23 17:02

Stephan