windows - 当计数大于 > 时删除文本文件中的行的批处理文件脚本
问题描述
我有填充有 URL 的文本文档,当我计算文件中的行数时,一旦行数大于1000
,我想删除后面的行,保留第一1000
行。
这是我的代码,但我不知道我做错了什么。
使用此脚本位置创建一个text.txt
文件并将1000
垃圾行放入其中进行测试。
@ECHO OFF & setLocal EnableDelayedExpansion
color 0A
%*
SET root_path=%~dp0
set text_name=text.txt
set text_name_output=output_text.txt
set max_line_count=1000
set /a counter=0
for /f %%a in (%root_path%%text_name%) do (
set /a counter += 1
echo Number of lines: !counter!
if !counter! LSS %max_line_count% (
echo less than
) else (
echo more than so delete these line numbers
(for /f "tokens=1,* delims=[]" %%a in ('type %root_path%%text_name%^|find /v /n ""') do (
echo/%%a|findstr /x "!counter!" >nul || echo/%%b
))>%root_path%%text_name_output%
)
)
pause
解决方案
对这个任务使用批处理文件是绝对不合适的,但是,这是一个基本结构,应该可以按照您的要求进行操作,但速度可能会很慢。
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "InFile=text.txt"
Set "LineLimit=1000"
Set "OutFile=output_text.txt"
If Not Exist "%InFile%" Exit /B
(
For /F Delims^= %%G In (
'%SystemRoot%\System32\findstr.exe /N /R "^" "%InFile%" 2^>NUL'
) Do (
Set "}=%%G"
Set /A "{=%%G" 2>NUL
SetLocal EnableDelayedExpansion
If !{! Gtr %LineLimit% (
EndLocal
GoTo Next
)
Echo(!}:*:=!
EndLocal
)
) 1>"%OutFile%"
:Next
推荐阅读
- python - 如何向 Django ManyToOneRel 添加额外的属性?
- python - Azure DevOps Api 不适用于 django-allauth azure
- rust - Rust 测试不断给出错误。我需要为测试包括一些东西吗?
- assembly - pop eax 如何让我退出 func?
- pyspark - 名称 sc 未定义
- pandas - pandas read_json 分块但仍有内存错误
- amazon-web-services - 在 Google Cloud Vision、Microsoft Azure Computer Vision API 或 Amazon Text Extract 上进行微调
- python-3.x - Pyodbc 查询以函数格式工作,但在以面向对象方式实现时会产生 Windows 致命异常
- javascript - 使用nodejs保存后如何从mongodb获取数据?
- android - Firestore 聊天消息的顺序不正确?