使用Windows命令行在文本文件中的最大记录长度

时间:2015-01-12 09:37:33

标签: windows cmd

如何使用Windows命令在文本文件中查找最大记录长度。即,它应输出该文件中找到的行的最大长度。

4 个答案:

答案 0 :(得分:3)

仅使用原生Powershell实用程序:

Get-Content C:\textfile.txt | Measure-Object -Property length -Maximum

获取最长行的实际内容

Get-Content C:\textfile.txt | Sort-Object -Property length | Select-Object -last 1

答案 1 :(得分:1)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /a maxlength=0
FOR /f "delims=" %%a IN (q27898945.txt) DO (
 SET "line=%%a"
 CALL :calc
)

ECHO maxlength IN file is %maxlength%

GOTO :EOF

:calc
SET "line2=!line:~%maxlength%!"
IF DEFINED line2 set/a maxlength+=1&GOTO calc
GOTO :eof

我使用了一个名为q27898945.txt的文件,其中包含一些随机文本供测试。

会对内容显示一些敏感度 - 例如,包含%text%的行将被误算。

答案 2 :(得分:0)

批量实现wc -L(将输入文件作为批处理参数)

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "tempFile=%temp%\%~nx0.%random%.tmp"

    for %%f in ("%~1") do (
        cmd /c "(type "%%~ff"&echo(&echo()" | findstr /o /r /c:"^" > "%tempFile%"
        setlocal enabledelayedexpansion
        set /a "max=0", "last=0"
        for /f "usebackq delims=:" %%a in ("%tempFile%") do (
            set /a "length=%%a-last-2"
            set "last=%%a"
            if !length! gtr !max! set "max=!length!"
        )
        echo !max! "%%~ff"
        endlocal
        del /q "%tempFile%" 2> nul 
    )

使用findstr生成一个临时文件,其中所有行都以文件内部的偏移为前缀。其余的是减去当前行与前一行的偏移量的偏移量来计算其长度。将两条附加行添加到使用的临时文件中(for /f加载文件的速度比检索命令输出快得多),以确保文件中的最后一行得到正确处理

答案 3 :(得分:0)

使用我的JREPL.BAT utility - 从XP开始在任何Windows机器上运行的混合JScript /批处理脚本。

jrepl "$" "if ($off>max) max=$off;false" /f test.txt /jbeg "var max=0" /jend "output.WriteLine(max)" /jmatch

如果要在脚本中使用它,请使用CALL前缀JREPL。

如果要捕获批处理脚本中变量的值:

for %%N in (
  'call jrepl "$" "if ($off>max) max=$off;false" /f test.txt /jbeg "var max=0" /jend "output.WriteLine(max)" /jmatch'
) do set /a max=%%N
相关问题