此代码:
@echo off
set /p a=Installing [<nul
set b=1
:loop
if %b% leq 2 set /p a=°<nul
if %b% gtr 4 if %b% leq 6 set /p a=±<nul
if %b% gtr 6 if %b% leq 8 set /p a=²<nul
if %b% gtr 8 if %b% leq 10 set /p a=±<nul
if %b% gtr 10 set /p a=°<nul
choice /t 1 /c y /d y>nul
set /a b=%b%+1
if %b%==13 (echo ]&goto :eof)
goto :loop
...来自http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/MS_DOS/A_1237-DOS-ECHO-text-to-previous-line-by-Paul-Tomasi.html#c18182并在cmd窗口中生成以下输出:
Installing [░░▒▒▓▓▒▒░░]
然而,我似乎无法通过谷歌找到解释这是如何工作的解释。将其他扩展的ascii字符替换为它们的位置似乎产生“命令的语法不正确”,因此只能设法猜测这是一个黑客,通过无意的方式将这些字符交换到扩展的ascii集中的较低字符 - 设计师的技巧。
如果有人也可以建议一个好网站来了解更多关于cmd / cmd程序这样的功能,我们将不胜感激。
答案 0 :(得分:4)
这是因为您的编辑器使用的是一个DOS和命令行使用的不同编码。
请参阅此处的字符176-178:
http://academic.evergreen.edu/projects/biophysics/technotes/program/ascii_ext-pc.htm
DOS和WIN列中的字符对由相同的数值表示,但DOS(因此命令行)和Windows(您的文本编辑器)将这些数字显示为不同的符号。
如果不清楚:您的文本文件是一系列字节(数字),其中一个字节的值为176.在DOS code page 437下,由于历史原因,它用于表示▓字形和命令行,使用与DOS相同的编码。但是,在Windows上运行的文本编辑器显然使用旧的Windows-1252编码读取文件,其中176表示°。
你可以尝试找一个支持437的编辑器,这样可以避免这种混乱。