2011-04-20 135 views

回答

1

我快速搜索表明,^可以用来逃避某些特殊字符。不知道它是否适用于你提到的角色,但也许值得一试。

http://www.robvanderwoude.com/escapechars.php

+0

是的,但有很多字符有点复杂,如CR,SUB,LF,Backspace等 – jeb 2011-04-20 11:03:27

2

可以呼应几乎所有的字符批,但不是NUL。
batch chr function

您可以使用Jscript(也可以是批处理/ jscript混合)。
在jscript中有一个简单的chr()函数

+0

这是一个非常有趣的阅读:-)。一面说明;你写* NUL字符似乎是不可能处理批处理,因为我认为cmd.exe内部工作与空终止的字符串。 所以你不能在一个变量中存储NUL。«* - 你不能将U + 0000存储在一个环境变量中 - 既不在'cmd'也不在其他任何地方。环境是'Var = Value \ 0NextVar = AnotherValue \ 0'块。因此,变量名称和它的值都不能包含U + 0000。这不是'cmd'的限制,而是环境变量在任何进程中的存储方式。 – Joey 2011-04-20 15:03:13

+0

@Joey谢谢你的解释,我忘了它,因为我没有用了15年。它限制了变量,但也许有一种方法可以在文件中创建一个NUL(并使用'TYPE myNULLfile'输出它) – jeb 2011-04-21 15:19:15

+0

我已经想过在批处理结束时嵌入二进制gunk(可以很容易地跳过一个'goto:eof'或者'exit/b',然后使用'more + n'输出它。不幸的是(由于某种原因它会把'\ 0'变成'\ n')。单独的文件和运输可能是最简单的方法。 – Joey 2011-04-21 21:21:07

0

你不能在控制台中处理或显示一个nul字符,你必须直接使用二进制流。批量限制为命令类型>和>>。

你可以做的是创建一个内部空字符文件,并将其写入与命令文件>>关于你的需要:

例:

:: Creating the file with the null char inside 
if not exist FileWithANulCharInside.txt (fsutil file createnew FileWithANulCharInside.txt 1) 
:: Adding it into a dummy file 
>test.log (0<nul set /p=abc) 
>>test.log type FileWithANulCharInside.txt 
>>test.log (0<nul set /p=abc) 
pause 

来源:http://johnfender.fr/?p=1138