【发布时间】:2020-01-23 02:59:58
【问题描述】:
首先,我将提供我的代码,然后进行解释。
$toImport = gci "\\server\folder\*" -include "Examplefile*.txt"
$toImport = $toImport.fullname
$date_of_file = @()
foreach($item in $toImport){
$date_of_file += (split-path $item -leaf).substring(11,6)
}
write-host ($date_of_file | sort-object)
我使用 get-childitem 获取文件名,然后将它们的完整路径放入数组中。我的 $toImport 变量包含文件路径,它看起来像:
\\server\folder\Examplefile010220.txt
\\server\folder\Examplefile010320.txt
\\server\folder\Examplefile010420.txt
\\server\folder\Examplefile010520.txt
\\server\folder\Examplefile120919.txt
然后我使用split-path 来获取文件名,我可以在其中运行.substring() 以提取日期,然后我将这些日期添加到变量$date_of_file 中,使用上面的示例将保存这些值...010220 010320 010420 010520 120919
然后我尝试按升序对这些日期进行排序,因为我的脚本的后面部分将处理这些文件,但它们必须按顺序完成。
我尝试修复上面发布的脚本的一些事情: (get-date -date $date_of_file | sort-object)
($date_of_file.ToString('MMddyy') | sort-object)
$date_of_file += ((split-path $item -leaf).substring(11,6) ).toString("MMddyy")
$date_of_file += get-date -date ((split-path $item -leaf).substring(11,6) )
($date_of_file | Sort-Object { $_. -as [datetime] })
$date_of_file += [datetime]::parseexact(((split-path $item -leaf).substring(11,6) ), 'MMddyy', $null).ToString('MMddyy')
我怎样才能让它按日期升序排序?到目前为止,每次我尝试某些事情时都会遇到错误,或者这个日期仍然在列表的末尾,“120919”,它应该是第一个。
=================更新
$toImport = gci "\\server\folder\*" -include "Examplefile*.txt"
$toImport = $toImport.fullname
cls
$date_of_file = @()
foreach($item in $toImport){
$date_of_file += [datetime]::parseexact(((split-path $item -leaf).substring(11,6) ), 'MMddyy', $null)
}
write-host ($date_of_file | Sort-Object)
这一位似乎有效,但它将日期格式转换为类似于Thursday, January 2, 2020 12:00:00 AM 的格式。我尝试对结果执行 .ToString('MMddyy') 但我收到此错误Cannot find an overload for "ToString" and the argument count: "1".
【问题讨论】:
-
那行不通。你可以看到我在上面尝试过。在对日期执行 parseexact 函数后,我确实得到了日期......但是使用
($date_of_file | Sort-Object)对其进行排序时无法正常工作这是我问题的基础。 -
这是它的排序顺序,让我抓狂:
010220 010320 010420 010520 120919
标签: powershell