我有一个代码段如下:
$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"
有人可以帮我吗?
答案 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;的一部分。