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

[文本处理] [已解决]批处理如何生成不是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(回车符)呢?在不使用第三方命令行程序的情况下。
初来乍到,请多指教!
1

评分人数

    • tmplinshi: 感谢给帖子标题标注[已解决]字样PB + 2

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

TOP

多谢指点,可是放到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^后面的空格,则不会生成文件。

TOP

回复 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
复制代码

TOP

OK了,谢谢!
学习中……

TOP

我还有最后一个问题不太明白,为什么
  1. set \n=^
复制代码
后面一定要跟两个空行才能得到正常结果呢?

TOP

回复 6# iiiiiiiiii


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

TOP

返回列表