bat批处理:批量删除所有txt文档当中第二行以后的内容

  在搭建网站疯狂钓鱼人-2024必看钓鱼技巧学习网站的时候需要对文章txt进行一些处理。

说明:1、文件夹下有大量txt文档,且每个文档都有多行内容,最少的也有两行内容。2、需要批量删除这些txt文档的第2行以后的内容,也就是说只保留第一行和第二行的内容。

  bat和txt的编码须存为ANSI

<# :
cls&echo off
rem 将当前目录下所有txt文本文件内指定行数之后的内容删除/保留指定行数之前的内容
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
set "newfolder=#result"
if not exist "%newfolder%" md "%newfolder%"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$num=2;
$newfolder=get-item -liter $env:newfolder;
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
$enc=[Text.Encoding]::GetEncoding('GB2312');
write-host $files[0].Name;
$arr=New-Object -TypeName System.Collections.ArrayList;
$text=[IO.File]::ReadAllLines($files[0].FullName,$enc);
for($j=0;$j -lt $text.length;$j++){
if(($j+1) -le $num){[void]$arr.add($text[$j]);}
}
$newfile=$newfolder.FullName+'\'+$files[0].Name;
[IO.File]::WriteAllLines($newfile,$arr,$enc);
}

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值