Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何设置以逗号、分号或等号开头的标题?_Batch File_Cmd_Title_Titlebar - Fatal编程技术网

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

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 ('

显然,可以设置包含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“本机”方式吗?

使用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
的示例):

但这并不是一个“完美”的解决方案,因为AppActivateTasklist命令将检测
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