有一份如下所示的文件:
class Foo
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
// Do your stuffs
}
static void CurrentDomain_ProcessExit(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "Full path of exe";
p.StartInfo.Arguments = "arguments";
p.Start();
}
}
这是一个动态创建的文件。正如您所看到的那样,它是AM和PM的混合体,单个日期可以包含这么多条目,也可以只有一个条目。我需要做的是需要找到一个日期有多少条目,并根据时间找到每个日期最近的条目并将它们写入文件,比如date.txt。
我试过Measure-Latest,但它让我成为所有条目中最新的一个。有人可以帮我这个。任何帮助都会非常感激。
答案 0 :(得分:2)
我会使用static ParseExact Datetime方法来解析日期并将它们存储在数组中:
$entries = @(
'7/30/2015 9:15:24 PM',
'7/30/2015 9:18:45 PM',
'7/31/2015 7:13:26 AM',
'7/31/2015 9:22:46 PM',
'8/01/2015 9:26:07 AM'
)
$usCulture = New-Object system.globalization.cultureinfo("en-US")
$parseFormat = 'M/dd/yyyy h:mm:ss tt'
$dates = $entries | % {[Datetime]::ParseExact($_, $parseFormat , $usCulture)}
$dates
的输出现在是:
PS D:\> $dates
Donnerstag, 30. Juli 2015 21:15:24
Donnerstag, 30. Juli 2015 21:18:45
Freitag, 31. Juli 2015 07:13:26
Freitag, 31. Juli 2015 21:22:46
Samstag, 1. August 2015 09:26:07
现在,您可以使用group
和sort
来获得所需的输出。例如,每个日期有多少条目:
PS D:\> $dates | group { $_.ToShortDateString() } -NoElement
Count Name
----- ----
2 30.07.2015
2 31.07.2015
1 01.08.2015
每个日期最近的一个:
$recentDates = $dates | sort { $_.Ticks } -Descending | group { $_.ToShortDateString() } | % {$_.Group | select -first 1}
$entries | where { [Datetime]::ParseExact($_, $parseFormat , $usCulture) -in $recentDates}
输出:
7/30/2015 9:18:45 PM
7/31/2015 9:22:46 PM
8/01/2015 9:26:07 AM