批处理中的回车换行符

简介:

看完后应该就明白了

 
  1. @echo off 
  2. for /f "delims=" %%a in ('ipconfig^|findstr /i "Address"') do set var=%%a 
  3. setlocal enabledelayedexpansion 
  4. set CarriageReturn=!var:~-1! 
  5. rem 必须用!!的形式才能得到和输出回车符Cr,否则回车符会被丢弃 
  6. echo +++!CarriageReturn!--- 
  7. rem 验证 
  8. echo +++!CarriageReturn!---|find /v "" 
  9. rem 用%%输出,得不到回车符 
  10. echo aaa%CarriageReturn%bbb 
  11. echo aaa%CarriageReturn%bbb|find /v "" 
  12.  
  13. rem ::::::::::::::::::::::::::::::::::: 
  14. rem 换行符Lf,也必须用!!的形式才能输出,否则Lf后面的字符被丢弃 
  15. set NewLine=^ 
  16.  
  17.  
  18. rem ::::::::::::::::::::::::::::::::::: 
  19. rem 上面两行直接回车 
  20. rem 虽然文本中转义字符^后面是CrLf两个控制字符,但它们在预处理时(执行语句之前) 
  21. rem 被作为行结束符(Tip:批处理是按行(整行)读取) 
  22. rem 因此实际运行时此行中^后面没有字符了,^是对文本中下一行的字符进行转义 
  23. rem set语句一下行是CrLf两个控制字符,按理说^应该是对Cr转义,从而NewLine应该是CrLf两个字符。 
  24. rem 但下一行还需要一个空行才能结束语句,说明这一行的Lf没有行结束的作用。 
  25. rem 所以如果^是对Cr转义,则Lf应该仍然是原来意义上的控制字符,有行结束的作用。 
  26. rem 则set语句在这一行就结束了,不需要下一行的空行,所以应该Lf是被转义了。 
  27. rem 而Cr被抛弃了,NewLine确实只有一个字符Lf而不是Cr,更不是两个字符CrLf 
  28. rem Cr的被抛弃看来也要归功于预处理(直接在CMD中输入时也要两个空行)。 
  29. rem 再次体现了MS瘟到死使用CrLf两个字符作为行结束符的不统一、不和谐之处! 
  30. rem Linux只需一个空行就够了 
  31. rem $echo \ 
  32. rem $(回车) 
  33. rem $(这一行就得到结果了) 
  34. rem ::::::::::::::::::::::::::::::::::: 
  35. echo 000!NewLine!111 
  36. rem 用%%输出,得不到换行符 
  37. echo aaa%NewLine%bbb 
  38. echo aaa%NewLine%bbb|find /v "" 
  39. pause 
  40. rem 此时的回车换行符没有表示输入完成(行结束EOL)的作用,只相当于普通字符 
  41. set/p=CrLf!CarriageReturn!!NewLine! 
  42. rem 用%%输出,回车换行符都得不到 
  43. set/p=CrLf%CarriageReturn%%NewLine% 
  44. rem '\r', 1 byte 
  45. set/p=Cr!CarriageReturn!<nul>Cr.txt 
  46. rem '\n', 1 byte 
  47. set/p=Lf!NewLine!<nul>Lf.txt 
  48. rem "\r\n", 2 byte 
  49. set/p=CrLf!CarriageReturn!!NewLine!<nul>CrLf.txt 
  50. pause 
  51. del Cr.txt Lf.txt CrLf.txt 

 本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/412423,如需转载请自行联系原作者


相关文章
|
8月前
去除txt文件空行批处理程序
刚好遇到一个需要去除txt文件空行的问题,就做了一个批处理bat程序来操作,挺方便,附上来给大家分享一下
258 0
|
11月前
|
监控 Python
一日一技:批量转义正则表达式中的特殊符号
一日一技:批量转义正则表达式中的特殊符号
67 0
|
Shell Linux
shell中的单引号字符' 双引号字符" 反斜杠字符/ 反引号字符`
反斜杠的另一种作用,就是当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。
|
Java Linux Shell
Linux命令之通配符&管道符
Linux命令之通配符&管道符
|
Java 编译器 测试技术
这么简单的三目运算符,竟然这么多坑?(二)
最近在一个业务改造中,使用三目运算符重构了业务代码,没想到测试的时候竟然发生 NPE 的问题。
240 0
这么简单的三目运算符,竟然这么多坑?(二)
|
Java 编译器 程序员
这么简单的三目运算符,竟然这么多坑?(一)
最近在一个业务改造中,使用三目运算符重构了业务代码,没想到测试的时候竟然发生 NPE 的问题。
367 0
这么简单的三目运算符,竟然这么多坑?(一)
|
Shell Linux Perl
在Linux命令行中进行大小写字符转换
在Linux命令行中进行大小写字符转换
在Linux命令行中进行大小写字符转换
|
Windows 移动开发 Linux
换行符 '\n' 和 回车符 '\r' 的区别?
顾名思义: 换行符就是另起一新行,光标在新行的开头; 回车符就是光标回到一旧行的开头;(即光标目前所在的行为旧行) ----------------------------------------------------------------------------- 所以我们平时编写文件的回车符(即:回车键 )应该确切来说叫做回车式的换行符。
1441 0

热门文章

最新文章