Für alle zukünftigen Leser, die lieber nicht 4 verschiedene Tools (Takecommander, Excel, Touch, BTM) und manuelle Anpassungen ausführen möchten, um die Dateidaten zu verändern, stelle ich dieses Copy & Paste-Codebeispiel bereit:
- Man nimmt das folgende PowerShell v5-Script und speichert es z.B. als
setdate.ps1 ab.
Wer NICHT alle 3 Daten (Erstellt:, Geändert:, Letzter Zugriff:) auf das neue Datum ändern möchte, kann vor die nicht erwünschten Zeilen einfach ein # Zeichen setzen und damit die Zeile ausser Kraft setzen.
Z.B. würde # $file.LastAccessTime = $date das Letzter Zugriff:-Datum nicht mehr anpassen.
param(
[string]$Path,
[string]$Year,
[string]$ReleaseDate
)
if (!(Test-Path $Path)) {
Write-Warning "Datei nicht gefunden: $Path"
exit
}
try {
# Priorität: ReleaseDate > Year
if ($ReleaseDate -match '^\d{4}-\d{2}-\d{2}$') {
$date = [datetime]::ParseExact($ReleaseDate, 'yyyy-MM-dd', $null)
}
elseif ($Year -match '^\d{4}$') {
$date = Get-Date "$Year-01-01"
}
else {
Write-Warning "Kein gültiges Datum für: $Path"
PAUSE
exit
}
$file = Get-Item $Path
$file.CreationTime = $date
$file.LastWriteTime = $date
$file.LastAccessTime = $date
Write-Host "OK: $Path -> $date"
} catch {
Write-Warning "Fehler bei $Path : $_"
}
PAUSE
- In Mp3tag erfasst man einen neuen Eintrag unter File -> Options -> Tools und erfasst folgende Angaben:
Name: Beliebiger Text zur Wiedererkennung dieses Datums-Änderungs-Tools
Path: Den Pfad wo die eigene PowerShell.exe steckt, unter Windows 11 z.B. in
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
Parameter: -NoProfile -ExecutionPolicy Bypass -File "C:\Temp\mp3-Test\Dateidaten aus year oder releasedate setzen\setdate.ps1" -Path "%_path%" -Year "%year%" -ReleaseDate "%releasedate%"
Natürlich muss man den Pfad zur eigenen setdate.ps1 anpassen.
Die restlichen Optionen kann man so stehen lassen.
Sie übergeben entweder ein vorhandenes YEAR oder ein RELEASEDATE an das PowerShell-Script.
Wendet man dieses Tool auf eine ausgewählte Datei an, sieht die Musikdatei mit einem YEAR 1923 in den 3 Eigenschaften im Windows-Explorer so aus:
Letzter Zugriff wird allerdings nur bis zum nächsten effektiven Zugriff halten.
Wenn man ein RELEASEDATE mit 1987-03-04 übergibt, sehen die Eigenschaften so aus:
Wer nun lieber den Inhalt eines anderen vorhandenen Felds übergeben will, der passt einfach den Feldnamen in %-Zeichen in den Tools-Parametern an (anstelle von %year% oder %releasedate%).
Das PowerShell-Script prüft nicht jede erdenkliche Formatierung von Jahren und Monaten und Tagen, sondern geht vom Format YYYY und YYYY-MM-DD aus. Bei YYYY wird immer -01-01 fix gesetzt.
Das PowerShell-Script prüft nicht jede erdenkliche Fehlerquelle (wie z.B. schreibgeschützte Dateien). Wer sowas gerne möchte, kann das Script selbstverständlich nach eigenen Anforderungen anpassen.
Wer keine Ausgabe auf der Kommandozeile sehen will, kann die 2 x PAUSE Befehle im PowerShell-Script ganz weglassen.
Bei Fragen könnt Ihr Euch einfach melden. Obwohl ich das Script bei mir getestet habe, kann ich keinerlei Verantwortung für irgendwelche Nebenwirkungen oder Abweichungen übernehmen. Testet es also gründlich und nur mit zuvor gesicherten Dateien.
Und der Vollständigkeit halber:
Wer seine Datensicherung aufgrund dieser 3 Daten macht, sollte sich sehr gut überlegen, was er mit dieser Manipulation allenfalls negativ beeinflusst.