在Windows上,我如何检测文件的行结尾?

时间:2015-08-27 17:23:35

标签: windows file line-breaks line-endings eol

我已经看到了问题的答案,但这些答案并非来自我所能说的Windows视角。

Windows使用CR LF,Unix使用LF,Mac使用LF,而经典mac使用其他东西。我没有脑力来告诉你,如果一个文件使用的是不同于我输入的行的结尾,我在尝试运行脚本/程序时会遇到错误,坦率地说,没有多大意义。转换后,脚本运行正常。

在Windows上,是否有预先检查文件使用的行结尾?

4 个答案:

答案 0 :(得分:1)

我也正在寻找“本机” Windows脚本解决方案。到目前为止,只需要以二进制方式读取VB中的第2行或第2行并检查字符。

一种“手动”检查的工具是Notepad ++。状态栏在文件编码指示器旁边的右端具有换行符样式指示器。

在7.5.6版本中看起来像这样  enter image description here

其他具有十六进制模式的编辑器也可以向您显示。

在Powershell中,此命令对于Windows样式文件返回“ True”,对于* nix样式文件返回“ False”。

(Get-Content '\\FILESERVER0001\Fshares\NETwork Shares\20181206179900.TXT' -Raw) -match "\r\n$" 

这是来自Matt的:https://stackoverflow.com/a/35354009/1337544

答案 1 :(得分:1)

使用诸如notepad ++之类的文本编辑器,可以帮助您了解行尾。

它将在工具的任务栏上显示用作Unix(LF)或Macintosh(CR)或Windows(CR LF)的行尾格式。

enter image description here

您还可以转到“视图”->“显示符号”->“显示行尾”以将行尾显示为LF / CR LF / CR。

enter image description here

答案 2 :(得分:0)

步骤:

然后你可以执行:

c:\gnuwin32\bin\file.exe my-lf-file.txt

我-LF-file.txt的; ASCII文本

c:\gnuwin32\bin\file.exe my-crlf-file.txt

MY-CRLF-file.txt的; ASCII文本,带有CRLF行终止符

当然,您可以将c:\gnuwin32\bin添加到%PATH%变量中,以便能够在不提供完整路径的情况下访问它。

<强>更新

  • 如果您安装了git,则可以启动git-bash并从那里运行file命令。

  • 或者您可以按照官方Microsoft文档中的说明安装this子系统,并可以访问file命令。

答案 3 :(得分:0)

在批处理文件中,您可以尝试将文件转换为 CRLF 并检查其大小是否增加:

rem check-crlf.bat

@echo off
setlocal

call type "%~1" | c:\Windows\System32\find.exe "" /v > "%~1.temp"
set size1=%~z1
rem add 2 in case the file doesn't have a trailing newline, since find will add it
set /a size1plus2=%size1%+2
call :setsize2 "%~1.temp%"

for /f %%a in ('c:\Windows\System32\findstr /R /N "^" "%~1" ^| c:\Windows\System32\find /C ":"') do set lines=%%a

if %size1plus2% equ %size2% (
    if %lines% equ 2 (
        echo File uses LF line endings!
    ) else (
        echo File uses CRLF or has no line endings!
    )
) else (
    if %size1% lss %size2% (
        echo File uses LF line endings!
    ) else (
        echo File uses CR+LF line endings!
    )
)
del "%~1.temp"
exit /b

:setsize2
set size2=%~z1
exit /b

我们正在处理没有尾随换行符的文件的特殊情况,以及带有两个以 LF 结尾的换行符的文件,这都会导致 2 个字节的增加。

用法:

check-crlf.bat file-i-care-about.txt