Сначала я предоставлю свой код, а затем объясню.
$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".