批处理取文本文件的行数

方法一:

Bash
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /a-d/b/s *.txt') do (
  for /f "tokens=3 delims=:" %%b in ('find /c /v "" "%%a"') do set n=%%b
  ren "%%a" "%%~na_!n: =!%%~xa"
)
pause

方法二:

Bash
@echo off & setlocal enabledelayedexpansion
%1(for /f "delims=" %%i in ('%~0 :^|sort') do ren %%i)& pause & exit /b
for /f "tokens=1,* delims= " %%i in ('find /c /v "" *.txt') do (
 set info=%%j
 set ln=!info:*:=!
 for /f "delims=" %%a in ("!ln!") do set fn=!info::%%a=!
 echo;"!fn!" "!fn:~,-4!!ln:~1!.txt"
)

批处理获取文件行数的方法

Bash
@echo off
for /f "tokens=2 delims=:" %%a in ('find /c /v "" data.txt')do set/a result=%%a+0
echo,%result%
pause

以上方法其实都大同小异,执行效率也差不多,小伙伴们需要的话自行选择吧

 

出处:https://www.zhiu.cn/51620.html

=======================================================================================

@echo off
@setlocal
@set n=0
for /f "usebackq delims=" %%i in (`findstr /n .* %~f1`) do @set /a n+=1
@echo %~f1 :该文件行数为:%n%
pause

这里把空行也纳入了统计,把上面保存为linecount.bat文件,然后运行
linecount xxxx.txt
就能显示行数结果了。(别忘记用notepad++之类把bat文件存成ANSI格式,否则运行结果中文乱码!)

 

出处:https://zhidao.baidu.com/question/273864134.html

=======================================================================================

 

怎么利用批处理查看一个文件有多少行

@echooff
set/p"file=请输入文件名:"
for /f "delims=:" %%a in('findstr/n .* "%file%"') do set lineno=%%a
echo %file%有%lineno%行

 

出处:https://wenwen.sogou.com/z/q805194893.htm

=======================================================================================

bat批处理获取文件行数

在windows下用batch命令获取文件行数,我的思路是用FOR语句来循环读取,但是在实验的过程中有点慢,请问有没有更好的方法?我的代码如下:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET lines=0
IF "%1" == "" ECHO No Input File! & EXIT /B
FOR /F "tokens=* delims=" %%i IN (%1) DO (
    SET /A lines=!lines!+1
)
ECHO 当前文件共 !lines! 行!

---------------------------------------------------------------------------------------

@echo off
REM 针对本程序斑驳不担保任何责任,欲知详细请查看 GPL.txt
REM 这是一个自由的程序,欢迎您在特定条件下再次发布本程序。
REM
REM 再次感谢您使用本脚本
REM 斑驳敬上
REM

set file_name=%1
if not defined file_name (goto bad)
if not exist %1 (goto err)
for /f "tokens=1 delims=][" %%i in ('find /n /v "" %1') do (
set line=%%i
)
echo total line: %line%
goto :eof

:bad
echo usage: %~n0 file_name
goto :eof

:err
echo file: %1 not exist!
goto :eof

---------------------------------------------------------------------------------------

感谢楼上,看了你的代码,我查了下findstr /?,其实直接用以下命令也是可行的

 findstr /n /i /v /x "!!~~~~~~~~~~~~~~~!!~~" [filepath]

后续可以根据以上代码打印出来的东西进行筛选

 

出处:https://www.wenjiangs.com/group/topic-8947.html

=======================================================================================

个人使用

@echo off&setlocal enabledelayedexpansion
cls
rem 指定文件扩展名,多个时使用空格分隔
set fileExt=*.cs
set fileCount=0
rem 保存文件的所有行数
set linesCountAll=0
rem 保存文件的行数,并不包括空行
set linesCountExcludeNull=0


set codePath=%~1
if [%1] equ [] set codePath=%cd%
rem Format data:remove '' and "" and \
set codePath='%codePath%' & set codePath=%codePath:'=%
set codePath="%codePath%" & set codePath=%codePath:"=%
if "%codePath:~-1%" equ "\" set codePath=%codePath:~,-1%
echo codePath=%codePath%

rem 判断源是文件夹还是文件
set pathIsDir=0
pushd "%codePath%" 2>nul && (popd&set pathIsDir=1)
echo pathIsDir=%pathIsDir%

echo;&echo [%date% %time%]按任意键将继续,退出请输入exit
set varConfim=0&set /p varConfim=
if /i "[%varConfim%]"=="[exit]" goto :eof
if /i [%pathIsDir%]==[0] goto calcFileFun
::goto showResultFun


:calcDirFun
pushd %cd%&cd /d "%codePath%"
echo [%date% %time%]开始计算【"%cd%"】路径下所有【%fileExt%】类型文件的行数.
for /f "delims=" %%i in ('dir/b/s %fileExt%') do (
    set/a fileCount=!fileCount!+1
    ::echo %%i
    rem 可以先使用find /c /v "" "%%i"查看下行数的是第几列,然后再修改tokens的值为几。这里tokens表示取第几列的内容
    for /f "tokens=3 delims=:" %%a in ('find /c /v "" "%%i"') do set/a linesCountAll=!linesCountAll!+%%a
    for /f "usebackq" %%j in ("%%i") do set /a linesCountExcludeNull=!linesCountExcludeNull!+1
)
popd
goto showResultFun


:calcFileFun
echo [%date% %time%]工作目录【%cd%】
if not exist "%codePath%" echo [%date% %time%]文件不存在【"%codePath%"】&goto :eof
echo [%date% %time%]开始计算【"%codePath%"】文件的行数.
for /f "delims=" %%i in ('dir/b/s "%codePath%"') do (
    set/a fileCount=!fileCount!+1
    ::echo %%i
    rem 可以先使用find /c /v "" "%%i"查看下行数的是第几列,然后再修改tokens的值为几。这里tokens表示取第几列的内容
    for /f "tokens=3 delims=:" %%a in ('find /c /v "" "%%i"') do set/a linesCountAll=!linesCountAll!+%%a
    for /f "usebackq" %%j in ("%%i") do set /a linesCountExcludeNull=!linesCountExcludeNull!+1
)
goto showResultFun


:showResultFun
echo.
if /i [%pathIsDir%]==[0] echo [%date% %time%]完成计算【"%codePath%"】文件的行数.
if /i [%pathIsDir%]==[1] echo [%date% %time%]完成计算【"%codePath%"】路径下所有【%fileExt%】类型文件的行数.
echo [%date% %time%]找到所有文件总数:%fileCount% 个
echo [%date% %time%]所有文件的行总数:%linesCountAll% 行
echo [%date% %time%]去除空行的行总数:%linesCountExcludeNull% 行
echo.
echo.
pause
View Code

 

posted on 2023-02-14 14:10  jack_Meng  阅读(936)  评论(0编辑  收藏  举报

导航