Board logo

标题: [文本处理] [已解决]批处理如何生成不是CRLF而是只以LF(换行符)结尾的文件? [打印本页]

作者: iiiiiiiiii    时间: 2012-11-20 02:29     标题: [已解决]批处理如何生成不是CRLF而是只以LF(换行符)结尾的文件?

本帖最后由 iiiiiiiiii 于 2012-11-20 22:46 编辑

例如我需要批处理生成一个内容如下的文件(16进制模式):
  1. 00000000h:23 21 41 0A
复制代码
其中0A就是LF(换行符),23 21 41对应为#!A。

我目前就知道的代码是
  1. echo #!A>1.txt
复制代码
生成的文件结果(16进制模式):
  1. 00000000h:23 21 41 0D 0A
复制代码
如何才能让生成的文件中不包含0D(回车符)呢?在不使用第三方命令行程序的情况下。
初来乍到,请多指教!
作者: tmplinshi    时间: 2012-11-20 02:55

本帖最后由 tmplinshi 于 2012-11-20 03:11 编辑
  1. @echo off
  2. :: -------------------------------------
  3. <nul >1.txt set /p =#!A^
  4. :: -------------------------------------
  5. pause
复制代码
在论坛中搜索 换行符,可以找到很多讨论这个的帖子.
作者: iiiiiiiiii    时间: 2012-11-20 22:33

多谢指点,可是放到for语句中应该如何变化呢?
  1.     @echo off
  2.     setlocal enabledelayedexpansion
  3.     if exist namelist.txt del namelist.txt
  4.     for /f "delims=." %%n in ('dir *.jpg /a-d /b') do echo %%n >>namelist.txt
  5.     for /f %%p in (namelist.txt) do (
  6.     <nul >%%p.bmp set /p=#!A^
  7.     )
  8.     pause
复制代码
我这样会造成!丢失,生成的文件如下
  1. 00000000h:23 41 20 20 20 20
复制代码
如果删除set /p=#!A^后面的空格,则不会生成文件。
作者: tmplinshi    时间: 2012-11-20 22:38

回复 3# iiiiiiiiii
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :: ------------------------
  4. set \n=^
  5. :: ------------------------
  6. if exist namelist.txt del namelist.txt
  7. for /f "delims=." %%n in ('dir *.jpg /a-d /b') do echo %%n >>namelist.txt
  8. for /f %%p in (namelist.txt) do (
  9.     <nul >%%p.bmp set /p=#^^!A!\n!
  10. )
  11. pause
复制代码

作者: iiiiiiiiii    时间: 2012-11-20 22:44

OK了,谢谢!
学习中……
作者: iiiiiiiiii    时间: 2012-11-20 23:03

我还有最后一个问题不太明白,为什么
  1. set \n=^
复制代码
后面一定要跟两个空行才能得到正常结果呢?
作者: tmplinshi    时间: 2012-11-20 23:18

回复 6# iiiiiiiiii


    我也不是很理解。跟转义有关。^ 是一个转义符。




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