如何删除名为“0文件复制的” TXT上线和下面的线(日期和时间)删除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
如何删除名为“0文件复制的” TXT上线和下面的线(日期和时间)删除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
可以使用找到/ V参数,例如命令
find /V "0 Files Copied" log.txt > log2.txt
但是,这只会删除“0复制文件”的行;这个命令不会让你删除后面的行。
您也可以使用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" }
}
所以不可能检测到某一行的下一行。但是如果它检测到某个日期等于上线?类似于:2015-09-17 9:42:05,10(line below :): 2015-09-17 9:42:06,35 –
我认为用findstr并不可能,但我已经更新了我的答案以展示如何在Powershell(随win7及更高版本提供)中做你想做的事情。 –
真的非常感谢您的帮助! –
到目前为止您尝试过什么?我们不是免费的代码生成社区。首先显示一些努力! – MichaelS
好的,对不起......这不是邪恶的意图。 –
其他用户应该如何知道您期望的代码?请提供输入和输出文件的样本;并删除标签[标签:MS - DOS],因为它不适用(我敢肯定你在Windows上工作); – aschipfl