Powershell 比较日期并分配给每个变量
我在目录中有2个excel文件,如下所示,带有时间戳(Powershell 比较日期并分配给每个变量,powershell,compare,Powershell,Compare,我在目录中有2个excel文件,如下所示,带有时间戳(YYYYMMdd\u HHmmss)。 目录中有2个excel文件。我将从目录中的文件名中提取时间戳,然后比较两个日期,最后为每个日期分配变量 我想将$Start变量分配为report-capacity-server01.contoso.com-20191010\u 171044.xlsx. 我想将$End变量分配为report-capacity-server01.contoso.com-20191108_130454.xlsx。为了从文件中
YYYYMMdd\u HHmmss
)。
目录中有2个excel文件。我将从目录中的文件名中提取时间戳,然后比较两个日期,最后为每个日期分配变量
我想将$Start
变量分配为report-capacity-server01.contoso.com-20191010\u 171044.xlsx.
我想将
$End
变量分配为report-capacity-server01.contoso.com-20191108_130454.xlsx。
为了从文件中提取时间戳,可以使用-split“-”
这将为您提供一个字符串数组,这些字符串在每个分隔符后被分割
$files = Get-ChildItem -Path ./Path-to-files
$timestamp = $files.BaseName -split "-"
$timestamp
变量现在包含两个文件中的字符串数组。通过索引操作,您可以选择时间戳并进行比较。当然,您也可以循环遍历每个文件并将时间戳直接分配给变量,而不是拆分$files
变量中的所有文件。如果您希望按照嵌入的时间戳(可能带有不同的名称前缀)按时间顺序排列完整的文件名,将时间戳提取表达式作为排序条件传递
$Start, $End = (Get-ChildItem *.xlsx |
Sort-Object { ($_.Name -split '[-.]')[-2] }).FullName
获取当前目录中所有扩展名为Get ChildItem*.xlsx
的文件的文件信息对象(.xlsx
实例)[System.IO.FileInfo]
接收一个脚本块(排序对象
),作为从每个输入文件的名称({…}
)中提取时间戳的标准,方法是将其拆分为$.name
和-
字符,并提取倒数第二个(
)结果标记[-2]
使用成员枚举提取已排序文件信息对象的全名(路径)(…).FullName
是一种分解赋值,它将2个(按时间顺序排序的)完整文件名分配给各个变量。请注意,如果有2个以上的文件,$Start,$End=…
将以数组形式接收所有剩余的文件$End
[datetime]
实例,请执行以下操作:
$timeStamps = Get-ChildItem *.xlsx | ForEach-Object {
[datetime]::ParseExact(($_.Name -split '[-.]')[-2], 'yyyyMMdd_HHmmss', $null)
}
你的问题是什么?您想知道如何获取时间戳吗?首先,目录中有2个excel文件。我将从目录中的文件名中提取时间戳,然后比较两个日期,最后为每个日期分配变量。在这种情况下,请使用此说明编辑您的问题以进行澄清。我不太清楚目录中的文件的名称。。名称是否只是时间戳,如
20191010_171044.xlsx
,或者时间戳是名称的一部分?你能举个例子吗?没有名字,只有时间戳,比如20191010_171044.xlsx。e、 g report-capacity-server01.contoso.com-20191108_130454.xlsx类似这样。我将从文件名中提取时间戳