在windows上,如何检测文件的行尾?
我已经看到了这些问题的答案,但这些答案并不是从windows的角度来看的 Windows使用CR LF,Unix使用LF,Mac使用LF,而classic Mac使用其他东西。我没有脑力告诉你,如果一个文件使用的行尾与我键入的行尾不同,我在运行脚本/程序时会出错,坦白说,这没有多大意义。转换后,脚本工作正常 在Windows上,是否可以先检查文件使用的行尾?步骤:在windows上,如何检测文件的行尾?,windows,file,line-breaks,line-endings,eol,Windows,File,Line Breaks,Line Endings,Eol,我已经看到了这些问题的答案,但这些答案并不是从windows的角度来看的 Windows使用CR LF,Unix使用LF,Mac使用LF,而classic Mac使用其他东西。我没有脑力告诉你,如果一个文件使用的行尾与我键入的行尾不同,我在运行脚本/程序时会出错,坦白说,这没有多大意义。转换后,脚本工作正常 在Windows上,是否可以先检查文件使用的行尾?步骤: 从以下链接下载二进制文件和依赖项zip文件: 提取同一目录下的内容(合并现有目录)。 e、 g.在c:\gnuwin32 然后
- 从以下链接下载
和二进制文件
zip文件:依赖项
- 提取同一目录下的内容(合并现有目录)。
e、 g.在c:\gnuwin32
c:\gnuwin32\bin\file.exe my-lf-file.txt
my-lf-file.txt;ASCII文本
my-crlf-file.txt;ASCII文本,带CRLF行终止符
当然,您可以将c:\gnuwin32\bin
添加到%PATH%
变量中,以便在不提供完整路径的情况下访问它
更新:
- 如果安装了
,则可以启动git
并从那里运行gitbash
命令file
- 或者,您可以按照Microsoft官方文档中的说明安装子系统,并访问
命令文件
(Get-Content '\\FILESERVER0001\Fshares\NETwork Shares\20181206179900.TXT' -Raw) -match "\r\n$"
这是马特在这里写的:使用一个文本编辑器,比如记事本+,可以帮助你理解行尾 它将在工具的任务栏上显示用作Unix(LF)、Macintosh(CR)或Windows(CR LF)的行结束格式 您也可以转到查看->显示符号->显示行尾,将行尾显示为LF/CR LF/CR
在批处理文件中,您可以尝试将文件转换为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
使用十六进制编辑器,分别查找字符
0x0D
和0x0A
。这两个字符(按顺序)组成了一个Windows行结束符。如果使用记事本打开文件,很明显它是否包含非Windows EOL字符(因为记事本不将其视为EOL)。不过,这假设文件是一致的——如果只有几个不匹配的EOL序列,这可能并不明显。低估了问题。另请参阅
check-crlf.bat file-i-care-about.txt