Batch file 如何设置以逗号、分号或等号开头的标题?
显然,可以设置包含cmd标准分隔符的标题,但通过Batch file 如何设置以逗号、分号或等号开头的标题?,batch-file,cmd,title,titlebar,Batch File,Cmd,Title,Titlebar,显然,可以设置包含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 ('
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“本机”方式吗?使用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
-键(
)的同时输入0
1
生成的
您可以使用
echo^a>>batch.bat将其放入文件中,然后使用记事本将其移动到正确的位置(记事本中不会显示它,就像空白一样;比空格更宽,但没有选项卡那么宽)问题的答案是LF
。我想我已经检查了所有ASCII字符,看起来字符没有显示在命令提示符的标题中(下面是一个带有FS
的示例):
但这并不是一个“完美”的解决方案,因为AppActivate或Tasklist命令将检测FS
和GS
字符(对于LF
没有这样的问题)。
也可以使用SOH
字符,但它显示为空格
也可以使用ctrl+]生成FS
带ctrl键的GS+\
使用ctrl+A是的,这是解决方案,但还有一点:-)很有趣。看起来标题在窗格中的位置更高。几乎可以在标题中插入两行。加上一行,但请检查我的答案。控制台标题中不显示某些字符,但如果使用AppActivate或Tasklist,则会检测到它们。
@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