使用数组从文件中删除所有文本

时间:2015-08-19 10:36:04

标签: powershell

我有一个代码段如下:

$array1=@()
foreach($datec in $datecontent) { 
    $dc = $datec -split '/'
    $mon = $dc[0]
    $day = $dc[1]
    $year = $dc[2]
    if($thisweekdays -contains "$mon/$day/$year"){
        $datec | Add-Content "C:\Previous_Week_Latest.txt"
        $array1 += $datec
    }
    else{
        #Do Nothing
    }
}

Previous_Week_Latest文件内容:

8/18/2015
8/13/2015

我有另一个包含日期的文本文件,如下所示。我正在做很多其他的事情,并创建了这个文件。

8/18/2015  
8/13/2015  
8/07/2015  
7/31/2015  
7/23/2015  

我不想要数组中的那些日期,因为我需要对此文本文件进行更多操作。基本上我需要实现的目标是,无论最终在$ array1中,我都需要从文本文件中删除它们。像这样:

Get-Content "C:\split_weeks_temp.txt" | Where {$_ -match "$array1"} | Set-Content "C:\split_weeks.txt"

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我将假设$array1包含正确格式化的数据,就像您在示例中所示。

8/18/2015
8/13/2015

而且您只需要过滤其他文件的内容,它将在$array1中省略这些日期。我仍在调查,但你以这种方式使用-match就是问题所在。由于它是一个数组,您可以使用-notin-notcontains

如果您只有PowerShell 2.0

Where {$array1 -notcontains $_} 

或者更容易使用PowerShell 3.0

Where {$_ -notin $array1} 

我仍然试图找出你当前逻辑的问题。你没有真正解释你的例子有什么问题。

<强>实际上...

也许日期字符串中有尾随空格?我认为这与它有关,因为你在问题中发布的所有日期之后都有空格,这些日期是&#34;文件&#34;的一部分。