使用Batch程序删除txt行

时间:2015-09-17 09:27:18

标签: windows file batch-file

如何删除名为“0 Files Copied”的txt及其下方的行(带有日期和时间)

基本上它会删除日志文件中的垃圾。

有编辑:

findstr /v /i /c:"0 File(s)" Backuper_log.txt > Backuper_log2.txt
type Backuper_log2.txt > Backuper_log.txt
del Backuper_log2.txt
exit

1 个答案:

答案 0 :(得分:1)

您可以将FIND命令与/ V参数一起使用,例如

find /V "0 Files Copied" log.txt > log2.txt

但这只会删除“0 Files Copied”的行;此命令不允许您删除后面的行。

您还可以使用FINDSTR,它允许搜索regualr表达式。

findstr /V /R /C:"^0 Files Copied$" log.txt > log2.txt

您还可以使用findstr使用适当的正则表达式独立删除包含日期的行。

a way使用findstr搜索多行,但是这种方法不适用于/ V选项,因为只过滤了匹配的第一行。所以你不能使用findstr删除匹配的行和下一行。

如果您确实需要专门做,我认为您最好的选择是使用alternative of grep for Windows

您还可以使用以下简单脚本来使用Powershell。只需将其复制并粘贴到powershell命令行中,然后按两次Enter键即可开始执行。确保输入文件位于当前文件夹中。

$Lines = Get-Content "input.log"
for ($num = 0; $num -lt $lines.Count; $num++ ) {
    if ($Lines[$num] -match "0 Files Copied") {
        $num++; #skip next line
        continue
    }
    if ($num -match 0) {
        $Lines[$num] > "output.log" }
    else {
        $Lines[$num] >> "output.log" }
}