Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用批处理程序删除txt行_Windows_File_Batch File - Fatal编程技术网

Windows 使用批处理程序删除txt行

Windows 使用批处理程序删除txt行,windows,file,batch-file,Windows,File,Batch File,如何删除txt上名为“0已复制文件”的行及其下方的行(带日期和时间) 基本上,它会删除日志文件中的垃圾 以下是编辑: 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 您可以将FIND命令与/V参数一起使用,例如 find /V "0 Files Copied" l

如何删除txt上名为“0已复制文件”的行及其下方的行(带日期和时间)

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

以下是编辑:

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

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

find /V "0 Files Copied" log.txt > log2.txt
但这只会删除“复制了0个文件”的行;此命令不允许删除后面的行

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

findstr /V /R /C:"^0 Files Copied$" log.txt > log2.txt
您还可以使用findstr使用适当的正则表达式独立删除带有日期的行

使用findstr可以跨多行搜索,但是这种方法在/V选项中不起作用,因为只过滤匹配的第一行。因此,不能使用findstr同时删除匹配的行和下一行

如果你确实需要这样做,我认为你最好的选择是使用一些

您还可以将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" }
}

到目前为止你试过什么?我们不是一个免费的代码生成社区。首先表现出一些努力!好的,对不起。。。这不是恶意的。其他用户怎么知道你期望代码做什么?请提供输入和输出文件的样本;并删除标记,因为它不适用(我很确定您正在Windows上工作);所以不可能检测到某个“行”的下一行。但如果它检测到与上线相同的日期?类似于:2015-09-17 9:42:05,10(以下行:)2015-09-17 9:42:06,35我认为findstr不可能实现,但我已经更新了我的答案,以显示如何在Powershell(随win7和更高版本提供)中实现您想要的功能。伙计,有一个问题。。。我在Powershell上进行了测试,测试了5行代码,结果只有一行代码:在您的示例中,确切的字符串是“0个复制的文件”,在s周围有括号。我不太明白您在测试中使用了哪5行代码,