[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理怎样获取换行符?

@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
set NewLine=^


echo 000!NewLine!111
rem 用%%输出,得不到换行符,但是可得到结束符
echo aaa%NewLine%bbb
echo aaa%NewLine%bbb|find /v ""
pause>nul

我不明白的地方就是如果得到的是换行符则输出结果应该是
aaa
     bbb
但是实际上是
aaa
bbb
岂不是成了CRLF

请哪位大侠讲解

比较这两个代码,set NewLine下面的那一个空行有一个空格键,不知道发在论坛上后会不会被去掉,故说明一下
  1. @echo off&setlocal enabledelayedexpansion
  2. set NewLine=^
  3. echo 000!NewLine!111
  4. rem 用%%输出,得不到换行符,但是可得到结束符
  5. echo aaa%NewLine%bbb
  6. echo aaa%NewLine%bbb | find /v ""
  7. pause>nul
复制代码
其输出结果是:
000 111
aaa bbb
aaa bbb

第2个:在第2个空行处有二个空格
  1. @echo off&setlocal enabledelayedexpansion
  2. set NewLine=^
  3.   
  4. echo 000!NewLine!111
  5. rem 用%%输出,得不到换行符,但是可得到结束符
  6. echo aaa%NewLine%bbb
  7. echo aaa%NewLine%bbb | find /v ""
  8. pause>nul
复制代码
其输出结果是:
000
  111
aaa
aaa
努力学习,努力挣分

TOP

所以我得出的结论是,用这个set str=^获取换行符时,set str=^后面接的换行符被转义成无。而如果第一个“空行”有字符的话,第一个空行的字符接上去,在第一个列子中就相当于set str等于一个空格。如果第1个空行没有字符就只有一个换行符的情况下, 其就相当于是set str等于一个换行符再加上第二个“空行”的字符
这里可以设置这样来查看
  1. @echo off&setlocal enabledelayedexpansion
  2. set NewLine=^
  3. ABC
  4. echo 000!NewLine!111
  5. rem 用%%输出,得不到换行符,但是可得到结束符
  6. echo aaa%NewLine%bbb
  7. echo aaa%NewLine%bbb | find /v ""
  8. pause>nul
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. set NewLine=^
  3. ABC
  4. echo 000!NewLine!111
  5. rem 用%%输出,得不到换行符,但是可得到结束符
  6. echo aaa%NewLine%bbb
  7. echo aaa%NewLine%bbb | find /v ""
  8. pause>nul
复制代码

[ 本帖最后由 sgaizxt001 于 2010-6-4 22:47 编辑 ]
努力学习,努力挣分

TOP

返回列表