Dateititel Attribut auf Dateiname ändern
Hallo, ich habe ca 5000 Dateien von denen ich das Attribut "Titel" auf den Dateinamen ändern soll. Ich dachte mir das geht sicher mit einer Batchdatei einfacher als per Hand, ich habe jedoch keine Erfahrung mit Batch gemacht bisher. Bin um jede Hilfe/Notlösung dankbar. Achja die Dateien befinden sich in unterschiedlichen Unterordern.
Gruß Jörn
Gruß Jörn
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 241684
Url: https://administrator.de/forum/dateititel-attribut-auf-dateiname-aendern-241684.html
Ausgedruckt am: 25.04.2025 um 14:04 Uhr
14 Kommentare
Neuester Kommentar
Zitat von @BlackEnding:
Wie kann man denn überhaupt den Namen einer Datei und die Attribute auslesen?
die erweiterten Dateieigenschaften kannst du z.B. mit dieser Powershell Funktion: Erweiterte Dateieigenschaften mit Powershell-Funktion abfragen abfragenWie kann man denn überhaupt den Namen einer Datei und die Attribute auslesen?
oder mit DSOFile:
Objecthandle Funktion um Dateidetails zu editieren
bin nur gerade beschäftigt, melde mich dazu nochmal ..
Grüße Uwe
Zitat von @BlackEnding:
Das überfordert mich doch schon ein bisschen :S Wollte doch nur ein Attribut anpassen...
das ist aber leider nicht so einfach wie du dir das vorstellst, denn dafür gibt es kein einheitliches Programming-Interface für jeden Dateityp ! Melde mich später nochmal dazu ...Das überfordert mich doch schon ein bisschen :S Wollte doch nur ein Attribut anpassen...
So,
hier mal ein Beispiel wie man es mit Beitrag machen könnte:
(RootOrdner in Zeile 4 und Dateierweiterungen in Zeile 5 angeben)
WICHTIG: Hier können keine beliebigen Dateiendungen angegeben werden. Die DSOFile.dll ist primär für Office-Dateien gedacht! Und nicht vergessen die DLL mit regsvr32 zu registrieren.
Viel Erfolg
Grüße Uwe
hier mal ein Beispiel wie man es mit Beitrag machen könnte:
(RootOrdner in Zeile 4 und Dateierweiterungen in Zeile 5 angeben)
WICHTIG: Hier können keine beliebigen Dateiendungen angegeben werden. Die DSOFile.dll ist primär für Office-Dateien gedacht! Und nicht vergessen die DLL mit regsvr32 zu registrieren.
#NoTrayIcon
#include <File.au3>
#include <Array.au3>
$folder = "C:\Ordner"
Global $arrExtensions = [".docx",".xlsx"]
$odocument = ObjCreate("DSOFile.OleDocumentProperties")
$allFiles = ListFilesRecurse($folder,$arrExtensions)
SplashTextOn("","Dateien werden bearbeitet ... Bitte warten","350","50","-1","-1",35,"","","")
for $i = 0 to UBound($allFiles) -1
$odocument.open($allFiles[$i])
Local $sDrive = "", $sDir = "", $sFilename = "", $sExtension = ""
Local $aPathSplit = _PathSplit($allFiles[$i], $sDrive, $sDir, $sFilename, $sExtension)
$odocument.SummaryProperties.title = $aPathSplit[3]
$odocument.Save()
$odocument.Close()
Next
SplashOff()
msgbox(0,"","Fertig",2)
Func ListFilesRecurse($sSourceFolder,$filter)
Local $sFile
Local $foundFiles
; Force a trailing \
If StringRight($sSourceFolder, 1) <> "\" Then $sSourceFolder &= "\"
; Create an array to hold the folders to be searched
Local $aFolderList[10] = [1, $sSourceFolder]
; Search within listed folders until all have been searched
While $aFolderList > 0
; Get path of folder to search
Local $sSearchPath = $aFolderList[$aFolderList[0]]
; Remove folder from list
$aFolderList -= 1
; Start the search
Local $hSearch = FileFindFirstFile($sSearchPath & "*.*")
; If failure then return
If $hSearch = -1 Then Return
; Now run through the contents of the folder
While 1
; Get next match
$sFile = FileFindNextFile($hSearch)
; If no more files then close search handle and return
If @error Then ExitLoop
; If a folder then add to array to be searched
If @extended Then
; #######################################
; Increase folder count
$aFolderList += 1
; Double array size if too small (fewer ReDim needed)
If UBound($aFolderList) <= $aFolderList Then ReDim $aFolderList[UBound($aFolderList) * 2]
; Add folder
$aFolderList[$aFolderList[0]] = $sSearchPath & $sFile & "\"
; #######################################
Else
; If a file ...
Local $sDrive = "", $sDir = "", $sFilename = "", $sExtension = ""
Local $aPathSplit = _PathSplit($sSearchPath & $sFile, $sDrive, $sDir, $sFilename, $sExtension)
if _ArraySearch($filter,$aPathSplit[4]) <> -1 then
_ArrayAdd($foundFiles, $sSearchPath & $sFile)
endif
EndIf
WEnd
; Close search handle
FileClose($hSearch)
WEnd
Return $foundFiles
EndFunc
Grüße Uwe
Zitat von @BlackEnding:
Die dsofile.dll registriere ich doch mit "cmd -> regsvr32 dsofile.dll" oder? Kommt jedefalls die Meldung
das sie erfolgreich registriert wurde...
Bitte ins Die dsofile.dll registriere ich doch mit "cmd -> regsvr32 dsofile.dll" oder? Kommt jedefalls die Meldung
das sie erfolgreich registriert wurde...
C:\windows\system32
Verzeichnis kopieren, bzw C:\windows\SysWOW64
bei einem 64Bit System und dort registrieren.Wenn du alles richtig angepasst hast (Dateierweiterungen mit Punkt aber ohne Sternchen!) dann läuft das, hier erfolgreich getestet.