bat批处理:批量删除所有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);
}

未经允许不得转载:郑州seo|不知则问,不能则学!-郑州seo笔记 » bat批处理:批量删除所有txt文档当中第二行以后的内容

赞 (1)
'); })();