我已经看到了问题的答案,但这些答案并非来自我所能说的Windows视角。
Windows使用CR LF,Unix使用LF,Mac使用LF,而经典mac使用其他东西。我没有脑力来告诉你,如果一个文件使用的是不同于我输入的行的结尾,我在尝试运行脚本/程序时会遇到错误,坦率地说,没有多大意义。转换后,脚本运行正常。
在Windows上,是否有预先检查文件使用的行结尾?
答案 0 :(得分:1)
我也正在寻找“本机” Windows脚本解决方案。到目前为止,只需要以二进制方式读取VB中的第2行或第2行并检查字符。
一种“手动”检查的工具是Notepad ++。状态栏在文件编码指示器旁边的右端具有换行符样式指示器。
其他具有十六进制模式的编辑器也可以向您显示。
在Powershell中,此命令对于Windows样式文件返回“ True”,对于* nix样式文件返回“ False”。
(Get-Content '\\FILESERVER0001\Fshares\NETwork Shares\20181206179900.TXT' -Raw) -match "\r\n$"
答案 1 :(得分:1)
使用诸如notepad ++之类的文本编辑器,可以帮助您了解行尾。
它将在工具的任务栏上显示用作Unix(LF)或Macintosh(CR)或Windows(CR LF)的行尾格式。
您还可以转到“视图”->“显示符号”->“显示行尾”以将行尾显示为LF / CR LF / CR。
答案 2 :(得分:0)
步骤:
binaries
和dependencies
个zip文件:
http://gnuwin32.sourceforge.net/packages/file.htm c:\gnuwin32
然后你可以执行:
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