是否可以在批处理/ cmd中回显一些不可打印的字符?

动机

我有一个第三方,以某种特定的function写的不知名的.bat文件,并将花费相当大的努力来重新写(这也是我的问题阻碍了这一努力)。 在for循环中,最基本的debugging方式似乎在屏幕上回显了一些信息。 我曾经使用其他语言的\r (0x0D)字符来完成此操作,在某些terminal/控制台上重新写入同一行(以避免过度泛滥,因为在我的情况下,最后一行会包含错误)。 我已经将值保存到一个variables。 然而,由于迭代可能需要相当长的时间,我仍然很高兴写一些输出到屏幕上,不会过度注入。

我试过了

  • 我知道我可以在回声中在cmd回显一个换行符echo. – 但是我只需要回车
  • 我已经试过这些,但他们没有工作: echo \recho ^recho \x0decho ^x0decho #0decho ^#0decho #x0decho ^x0d
  • 我试图在没有太多帮助的情况下为类似的东西而努力

是否有可能以某种方式在windows / dos / nt / cmdbatch file中回显回车(或其他不可打印的)字符?

PS。 我使用XP或7厘米处理器

Solutions Collecting From Web of "是否可以在批处理/ cmd中回显一些不可打印的字符?"

你需要两个黑客 – 一个定义一个回车符,另一个回显一行文本而不发出换行符。

1)定义回车。

 :: Define CR to contain a carriage return (0x0D) for /f %%A in ('copy /Z "%~dpf0" nul') do set "CR=%%A" 

一旦定义,该值只能通过延迟扩展访问 – 如!CR! ,而不是%CR%

2)在没有发行换行的情况下在屏幕上打印文本

 <nul set /p "=Your message here" 

如果字符串以a开始,这将失败。

此外,根据Windows版本,主要的引号和/或空格可能被剥离

把它放在一起

 @echo off setlocal enableDelayedExpansion :: Define CR to contain a carriage return (0x0D) for /f %%A in ('copy /Z "%~dpf0" nul') do set "CR=%%A" <nul set/p"=Part 1 - press a key!CR!" pause >nul <nul set/p"=Part 2 - press a key!CR!" pause >nul <nul set/p"=Part 3 - Finished !CR!" 

请注意,我把!CR! 在每封邮件的末尾准备下一个。 你不能把!CR! 一开始是因为领先的白色空间将被剥离。

在线的某个地方,“echo”可以用来打印[cr]行。 非常适合结束其他一些不会在末尾放置[cr]的命令的输出。 我已经使用这个发送CR到文件,如IPconfig | 找到“回复”>> myip.txt,然后echo \ >> myip.txt

建立在dbenham的帖子上,我有以下例程在Win7中工作,主要是在记事本中可编辑; 但是,我用Scite生成退格键ALT + 0 0 8 ,字符。 它首先清除行,并将光标放在文本的末尾,稍有不同。 这里是例程:

 :RECHO
 <nul set / p“= backspace !CR! 选项  选项  选项  选项  选项  选项  选项  选项  选项  选项  ”
 <nul set / p“= backspace !CR!%*”
 GOTO:EOF
 :尼哥
 <nul set / p“= backspace !CR! 选项  选项  选项  选项  选项  选项  选项  选项  选项  选项  ”
 ECHO 退格 !CR!%*
 GOTO:EOF

dbenham的例子修改:

 @ECHO OFF SETLOCAL EnableDelayedExpansion FOR /F %%a IN ('copy /Z "%~dpf0" nul') DO SET "CR=%%a" SET "BS=" ECHO Testing CR. This line a regular echo ... CALL :RECHO Part 1 - press a key pause >nul CALL :RECHO Part 2 - press a key pause >nul CALL :NECHO Part 3 - Finished ECHO Testing CR. This line a regular echo ... GOTO END :RECHO <nul set/p"=!BS!!CR! " <nul set/p"=!BS!!CR!%*" GOTO :EOF :NECHO <nul set/p"=!BS!!CR! " ECHO !BS!!CR!%* GOTO :EOF :END ENDLOCAL EXIT /B 

在复制上述脚本时,请确保保留退格字符。

     SET“BS = 退格