如何使用附加时间戳的文件名选择正确的文件并将最后放置的文件复制到另一个文件夹中?
How to pick the right file using timstamp appended file name and copy the last dropped file into another folder?
我正在尝试使用文件名(文件名中附加的时间戳)选择正确的文件。
我有 3 个文件:text.041922.061512
、text.041922.063016
、text.041922.064212
。我需要 pick text.041922.064212
因为它是最后创建的,文件名本身有数据和时间。我如何使用 PowerShell 实现此目的?
提前致谢。非常感谢。
我的脚本是这样的:
Get-ChildItem -Path "c:/demo | Sort-Object { [DateTime]::ParseExact($_.BaseName.Substring(7,13).Replace('.',' '), "MMddyy hhmmss",$null) } | Select-Object -First 1 | Copy-Item -Destination "E:/test/"
您的文件名缺少扩展名,但假设扩展名没有任何数字,您可以使用 -replace '\D+'
从文件名中删除所有非数字,然后 [=] 的格式13=] 可能是 MMddyyHHmmss
.
如果文件实际上没有扩展名,请使用 $_.Name
而不是 $_.BaseName
。
Get-ChildItem -Path "c:/demo" | Sort-Object {
[DateTime]::ParseExact(($_.BaseName -replace '\D+'), 'MMddyyHHmmss', $null)
} -Descending | Select-Object -First 1 | Copy-Item -Destination "E:/test/"
这是一个您可以用来测试的例子:
[System.IO.FileInfo[]]('text.041922.061512', 'text.041922.063016', 'text.041922.064212') | Sort-Object {
[DateTime]::ParseExact(($_.Name -replace '\D+'), 'MMddyyHHmmss', $null)
} -Descending | Select-Object -Expand Name -First 1
# Returns: text.041922.064212
我正在尝试使用文件名(文件名中附加的时间戳)选择正确的文件。
我有 3 个文件:text.041922.061512
、text.041922.063016
、text.041922.064212
。我需要 pick text.041922.064212
因为它是最后创建的,文件名本身有数据和时间。我如何使用 PowerShell 实现此目的?
提前致谢。非常感谢。
我的脚本是这样的:
Get-ChildItem -Path "c:/demo | Sort-Object { [DateTime]::ParseExact($_.BaseName.Substring(7,13).Replace('.',' '), "MMddyy hhmmss",$null) } | Select-Object -First 1 | Copy-Item -Destination "E:/test/"
您的文件名缺少扩展名,但假设扩展名没有任何数字,您可以使用 -replace '\D+'
从文件名中删除所有非数字,然后 [=] 的格式13=] 可能是 MMddyyHHmmss
.
如果文件实际上没有扩展名,请使用 $_.Name
而不是 $_.BaseName
。
Get-ChildItem -Path "c:/demo" | Sort-Object {
[DateTime]::ParseExact(($_.BaseName -replace '\D+'), 'MMddyyHHmmss', $null)
} -Descending | Select-Object -First 1 | Copy-Item -Destination "E:/test/"
这是一个您可以用来测试的例子:
[System.IO.FileInfo[]]('text.041922.061512', 'text.041922.063016', 'text.041922.064212') | Sort-Object {
[DateTime]::ParseExact(($_.Name -replace '\D+'), 'MMddyyHHmmss', $null)
} -Descending | Select-Object -Expand Name -First 1
# Returns: text.041922.064212