Board logo

标题: [文本处理] [已解决]批处理能不能加入换行符? [打印本页]

作者: jzsgyml    时间: 2011-7-21 12:41     标题: [已解决]批处理能不能加入换行符?

搜索了下sed可以,想用批处理直接点。
1.txt如下
  1. 内容A
  2. 内容B
  3. 内容C|
复制代码
文本结束的光标在C后面,
我在末尾插入时间,需要把光标换行,请问如何修改?
echo %date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2% %ip1%>>1.txt

这个错误代码结果是
  1. 内容A
  2. 内容B
  3. 内容C07-21 12:41
  4. |
复制代码
需求的结果应该是
  1. 内容A
  2. 内容B
  3. 内容C
  4. 07-21 12:41
  5. |
复制代码
光标在时间行的下面那行
作者: CrLf    时间: 2011-7-21 12:50

本帖最后由 CrLf 于 2011-7-21 12:58 编辑

more 命令会自动补足缺失的换行,但是有三个限制:1,在循环中耗时比重大;2,more 命令读取超大文本时有可能读不尽;3,more命令会自动为单个的换行符配上回车,同时所有nul字符都会被转换成断行
  1. (
  2. more 1.txt
  3. echo %date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2% %ip1%
  4. )>2.txt
复制代码
另一种更通用的方法,用find命令补足缺失的换行:
  1. (
  2. find /v ""<1.txt
  3. echo %date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2% %ip1%
  4. )>2.txt
复制代码
也可以通过findstr判断文本是否存在不含换行符的行,若存在则单独输出一个空行:
  1. (
  2. type 1.txt
  3. findstr /v $ 1.txt>nul||echo;
  4. echo %date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2% %ip1%
  5. )>2.txt
复制代码

作者: zz100001    时间: 2011-7-21 15:07

既然你看到了echo会换行,那么先追加一个空行不就OK了:
  1. echo,>>1.txt
  2. echo %date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2% %ip1%>>1.txt
复制代码
或者
  1. echo ^
  2. %date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2% %ip1%>>1.txt
复制代码

作者: jzsgyml    时间: 2011-7-21 18:22

2楼具有通用性,能够判断是不是空行,不用担心出错。
3楼直接,如果在知道文本没有空行的情况下,echo,>>1.txt,直接插入空行也很简洁。
谢谢大家!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2