42

たとえば、次のファイルを含むディレクトリがあるとします。

Test-20120626-1023.txt
Test-20120626-0710.txt
Test-20120626-2202.txt
Test-20120626-1915.txt
Test-20120626-1142.txt

ご覧のとおり、各ファイル名には、ソート可能な形式の作成時刻が含まれています。

最新のファイル名 (この場合はTest-20120626-2202.txt) の名前を見つけて変数に格納するにはどうすればよいですか?

注: 違いがある場合は、ディレクトリ パスも変数に格納されます。

4

5 に答える 5

84

次のようなことを試すことができます:

$dir = "C:\test_code"
$latest = Get-ChildItem -Path $dir | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$latest.name
于 2012-06-26T15:42:10.937 に答える
15

名前がファイル プロパティの作成時間と同じ場合はCreationTime、次を簡単に使用できます。

$a = Dir | Sort CreationTime -Descending | Select Name -First 1

それから

$a.name

name ファイルが含まれます。

name が常に同じ形式 (パディング 0 の日付と時刻、たとえば20120102-0001 )の場合、次のようにも機能すると思います。

$a = Dir | Sort Name -Descending | Select Name -First 1
于 2012-06-26T15:35:06.727 に答える
8

多数のファイルを操作している場合は-Filter、実行時間が大幅に短縮されるため、パラメーターを使用することをお勧めします。

ジェームズが提供した例に基づいて、これがどのように使用されるかを次に示します。

$dir = "C:\test_code"
$filter="*.txt"
$latest = Get-ChildItem -Path $dir -Filter $filter | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$latest.name
于 2015-02-11T17:41:29.347 に答える
7

何らかの理由で、ファイルの作成日がファイル名にスタンプされている日付と異なる場合は、ファイル名を日時オブジェクトに解析し、式で並べ替えることができます。

$file = Get-ChildItem | 
Sort-Object { [DateTime]::ParseExact($_.BaseName,'\Te\s\t\-yyyyMMdd\-HHmm',$null) } |
Select-Object -Last 1
于 2012-06-26T15:59:27.823 に答える