Wenn Sie die Dateiinfos zu beliebigen Dateien per Programm ändern
möchten, stehen Sie erstmal vor einem Problem. Denn an diese
Informationen kommen Sie nicht über das File-Objekt. Gerade für
Suchmaschinen (beispielsweise im lokalen Intranet) sind diese Parameter
jedoch sehr wichtig. Microsofts SharePoint beispielsweise indexiert alle
Office-Dokumente nicht nur nach dem Inhalt, sondern eben auch anhand
dieser Properties.
Im vorliegenden Beispiel haben wir hunderte von Dokumenten und eine
Datenbank, in der die Meta-Informationen zu den betreffenden Files
vorgehalten werden. Mit dem Einsatz von SharePoint müssen diese
Meta-Informationen dem Dokument zugeordnet werden. Da dies eine
einmalige Aktion ist, eignet sich hierfür einen Konsolenanwendung, die
eine SQL-Abfrage durchführt, das Dokument öffnet und dann manipuliert.
Im vorliegenden Beispiel beschränken wir uns auf die Manipulation der
Properties.
Microsoft hat vor Jahren eine DLL namens „dsofile.dll“ veröffentlicht.
Entgegen der Dokumentation kann die DLL nicht nur lesen, sondern die
Properties auch speichern. Unter dem Knowledgebase-Artikel
(„http://support.microsoft.com/kb/224351/de“) können Sie die DLL
kostenlos downloaden. Mit dabei sind zwei Beispiele, unter anderem eine
VB6-Demo.
Laden Sie sich die DLL herunter, entpacken Sie die ZIP-Datei und
registrieren Sie die DLL. In Visual Studio sollte nun unter „Verweise“ /
„COM“ die DLL aufgeführt sein. Dann können Sie auf dsoFile zugreifen.
using System; using System.Collections.Generic; using System.Text; using DSOFile; namespace Intranet_Attribute { class Program { static void Main(string[] args) { //Datei holen String filename = @"G:mein_pfad_zur_datei est.txt"; try { DSOFile.OleDocumentProperties mydso = new DSOFile.OleDocumentProperties(); mydso.Open(filename, false, dsoFileOpenOptions.dsoOptionDefault); DSOFile.SummaryProperties properties = mydso.SummaryProperties; //An den Filename kommen wir ebenfalls string name = mydso.Name; //Properties neu bestücken properties.Title = "Mein Titel"; properties.Subject = "Mein Betreff"; properties.Author = "Mein Autor"; properties.Category = "Kathegorie"; properties.Keywords = "Stichwörter"; properties.Comments = "Kommentar"; //änderungen speichern mydso.Save(); return; } catch (Exception ex) { System.Environment.Exit(1); } } } }
Wenn Sie die Properties einer Datei ändern, ändert sich auch das
Datum der Datei im Dateisystem. So können Sie das Datum der Datei
erhalten: öffnen Sie das File VOR dem ändern durch DSOFile mit:
file = new System.IO.FileInfo(filename);
Speichern Sie das Datum des Dokumentes in einer Datei:
string sAltesDatum = file.LastWriteTime.ToString();
ändern Sie die Properties der Datei entsprechend und ändern dann nach
dieser Manipulation das Dokumentendatum aus der Variable „sAltesDatum“.
file = new System.IO.FileInfo(filename); DSOFile.OleDocumentProperties mydso = new DSOFile.OleDocumentProperties(); mydso.Open(filename, false, dsoFileOpenOptions.dsoOptionDefault); DSOFile.SummaryProperties properties = mydso.SummaryProperties; //Altes Datum speichern string sAltesDatum = file.LastWriteTime.ToString(); //Properties neu bestücken properties.Title = "Mein ganz neuer Titel"; //Änderungen speichern mydso.Save(); //Das Datum der Datei ändern DateTime altesdatum = DateTime.Parse(sAltesDatum); file.LastWriteTime = altesdatum;
Incoming search terms:
- c# änderungsdatum einer datei ändern
- c# CreationTime setzen
- c# dateidatum ändern
