如何设置以逗号、分号或等号开头的标题?

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

显然可以设置包含 cmd 标准分隔符的标题,但是通过 TITLE 命令看起来不可能设置以分隔符开头的标题。

可以用这样的标题创建一个新的 CMD 实例:

start "==" cmd.exe

但不能用于同一实例。

.NET 和 Console.Title 属性 也可以,但是当从批处理文件调用时,只要编译的 exe 运行,磁贴就会持续:

@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); 

(可能通过代码注入是可能的)

有windows'native'方法吗?

使用 Win7 x64,我可以在有问题的字符前面换行时生成它。

@echo off
setlocal EnableDelayedExpansion
set LF=^



title !LF!,bc

在Win7中,使用LF时,标题的高度或位置似乎没有差异。

测试

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

但是当前程序在标题中显示为 运行 的时间,因此 TITLE 命令本身会产生闪烁。

我找到了另一种方法:

title ^A,string

其中 ^A 是通过在按住 ALT 键 ( <pressALT><0><1><releaseALT> ) 的同时输入 0 1 来生成的。

您可以使用 echo ^A>>batch.bat 将其放入文件中,然后使用记事本将其移动到正确的位置(它不会在记事本中显示,例如白色space;比 space, 但不像 TAB 那样宽泛)

LF 是问题的答案,但也有解决方法。我想我已经检查了所有的 ASCII 字符,看起来 FS and GS 字符没有显示在命令提示符的标题中(这里有一个 FS 的例子):

@echo off 
setlocal 
::dbenham's hexprint was used here 
::http://www.dostips.com/forum/viewtopic.php?p=23888 
::Define a Linefeed variable 
set LF=^ 


::above 2 blank lines are critical - do not remove. 

::Create a FS variable 
call :hexprint "0x1C" FS 

title %FS%=;= 
exit /b 

:hexPrint  string  [rtnVar] 
  for /f eol^=^%LF%%LF%^ delims^= %%A in ( 
    'forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%~1"' 
  ) do if "%~2" neq "" (set %~2=%%A) else echo(%%A 
exit /b

但这不是 'perfect' 解决方案,因为 AppActivateTasklist 命令将检测 FSGS 个字符(LF 没有这样的问题)。 也可以使用 SOH 字符,但显示为 space.

FS也可以ctrl+制作

GS 与 ctrl+\

按 ctrl+A 的 SOH