【发布时间】:2017-04-09 18:24:28
【问题描述】:
假设我有以下批处理脚本:
For ... DO (
SET VAL=%%B
IF defined VAL echo %%A=%%B >> %OUTPUT_FILEPATH%
)
如何让echo 使用 Unix(仅换行)换行符输出?
或者,我可以按原样编写文件,然后从批处理脚本中转换它吗? (某种查找 /r/n 并用 /n 替换?如果是,我该怎么做?)
我想要一个独立的解决方案(即不涉及下载额外实用程序的解决方案,并且可以从批处理脚本本身 [Windows 7] 中完成)。
【问题讨论】:
-
我很惊讶我在 SO 的某个地方找不到这个问题
-
将文本文件转换为 Unix 风格的换行符实际上只是输出每一行而不带尾随换行符,然后是显式输出的换行符。因此,在搜索“没有换行符的回声”和“换行符”之类的内容时,您可能会发现一些有用的东西......
-
网络上有很多关于将 Windows 文本文件转换为 unix 的内容。如果你有我的JREPL.BAT regular expression text processing utility,那么你可以正常写入文件,然后使用
call jrepl "^" "" /u /f yourFile.txt /o -。或者,您可以使用管道直接以 unix 格式写入文件:yourCommandThatGeneratesFile | jrepl "^" "" /u /o yourFile.txt。 -
@dbenham:我不明白你的
jrepl "^" "" ...是如何工作的。"^"正则表达式是匹配 position 的 anchor;它不匹配字符(所以它不能消除它们),并且在任何情况下,它都匹配行的开头,而不是所需的结尾... -
@Aacini - 这有点像 hack。查找/替换对故意没有效果。重要的一点是
/U选项,它使用\n终止符而不是\r\n写入所有行。我只需要一个非破坏性的查找/替换对。下载 JREPL 只是为了将文本转换为 unix 形式是可笑的。但对于许多其他情况来说,它是一个有用的工具,如果你碰巧已经拥有它,那么它可以成为进行这种转换的有效工具。我将 JREPL 解决方案写成评论而不是答案,正是因为它是一个 hack。
标签: batch-file echo linefeed