Ich muss die Erweiterung zu ". *" Übereinstimmen, um alle Dateien in einem bestimmten Quellordner zurückzugeben, die die LastWriteTime von $ lwt wie in Code gezeigt haben. Der Benutzer kann entweder eine spezifische Erweiterung wie ".csv" bereitstellen, aber eine wird nicht bereitgestellt, dann durchsucht das Skript einfach alle Dateien. Aber ich kann die Erweiterung nicht mit ". *" Vergleichen, um alle Dateien zurückzugeben.Powershell-Dateierweiterung übereinstimmen. *
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)][string]$source,
[Parameter(Mandatory=$true)][string]$destination,
[string]$exten=".*",
[int]$olderthandays = 30
)
$lwt = (get-date).AddDays(-$olderthandays)
if(!(Test-Path $source)){
Write-Output "Source directory does not exist."
exit
}
if(!(Test-Path $destination)){
Write-Output "Source directory does not exist."
exit
}
if($olderthandays -lt 0){
Write-Output "You can't provide a negative number of days. If you want everything deleted simply provide 0 for number of days."
exit
}
if(!$exten.StartsWith(".")){
$exten = "."+$exten
$exten
}
try{
Get-ChildItem $source -ErrorAction Stop | ?{$_.LastWriteTime -lt $lwt -AND $_.Extension -eq $exten} | foreach {
Write-Output $_.FullName
# Move-item $_.FullName $destination -ErrorAction Stop
}
}
catch{
Write-Output "Something went wrong while moving items. Aborted operation."
}
Wie kann dies erreicht werden?
Was bedeutet "Übereinstimmung mit der Erweiterung zu '. *'"? Also würde ein Dateiname von "/Users/foo/Documents/bar.*" übereinstimmen? Oder etwas anderes, weil ". *" In Regex sehr sinnvoll ist. – RamenChef
Ich möchte sagen, jede Erweiterung wie es sei es .csv, .pdf oder irgendetwas. – Junaid