Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char *user;
char logdatei[32];
FILE *log;
char zeile[1000];
char pstdatei[500];
char *ort;
char pfad_alt[1000];
char pfad_neu[1000];
char pfad_temp[1000];
char lw[1];
system("cls");
user = getenv ( "USERNAME" );
if (user != NULL) { //Pfad fuer Logdatei bauen
strcpy(logdatei, "h:\\__pst_");
strcat(logdatei, user);
strcat(logdatei, ".log");
printf("Bearbeite Datei: %s\n",logdatei);
}
else {
printf("Fehler beim lesen des Users\n");
exit(1);
}
if((log = fopen(logdatei, "r"))==NULL) {
printf("Kann Logdatei nicht oeffnen.\n");
exit(1);
}
while(!feof(log)) { //so lange Datei nicht zu Ende
fgets(zeile, 1000, log); //Zeile auslesen
if(ort = strstr(zeile, "von ")) { //wenn die Zeile mit 'von ' beginnt
strncpy(pfad_alt,ort+4,1000); //Pfad zur Datei auslesen
strncpy(lw,ort+4,1); //Laufwerk auslesen - geht nicht...
strcpy(pfad_neu, "\\\\ZENTRAL\\LAPTOP\\"); //neuen Pfad zusammenbauen
strcat(pfad_neu, user);
strcat(pfad_neu, "\\");
strcat(pfad_neu, lw); //Laufwerksbuchstabe anhaengen - geht nicht...
strncat(pfad_neu,pfad_alt+2,1000); //alten Pfad anhaengen - geht nicht...
//printf("%s", pfad_alt+2); //das geht seltsamerweise
printf("mkdir %s",pfad_neu);
printf("copy %s\\*.pst %s\\",pfad_alt, pfad_neu);
}
}
fclose(log);
}
Was ich vor habe: bei jedem User liegt auf h: eine Datei namens __pst_%USERNAME%.log (dir *.pst /s >__pst_%USERNAME%.log)
Diese soll geöffnet werden und jede darin auftretende Zeile verarbeitet werden.
Jedesmal, wenn eine Zeile " Verzeichnis von " enthält, soll aus dieser der Pfad kopiert werden
1. Problem: er nimmt IMMER das \n am Ende mit. Habe es schon mit strlen(pfad-1) usw probiert. Kein Erfolg.
Dieser gewonnene Pfad soll gleichzeitig auch als neuer Pfad auf einem andren Server dienen. Davor soll noch der Laufwerksbuchstabe als Ordner gestellt werden. Auch das funktioniert nicht.
Und das dritte Problem ist, dass obwohl ich ihm sage, dass er den alten Pfad erst ab Position 3 kopieren soll, nimmt er immer schon das Laufwerk mit.
Ich hoffe, sowohl der Code wie auch meine Beschreibung sind deutlich genug ^^
Ach ja: so sieht eine Datei aus:
Code:
Volume in Laufwerk C: hat keine Bezeichnung.
Volumeseriennummer: xxx
Verzeichnis von c:\Documents and Settings\Tester\Local Settings\Application Data\Microsoft\Outlook
14.12.2007 11:48 271.360 archive.pst
1 Datei(en) 271.360 Bytes
Verzeichnis von c:\Dokumente und Einstellungen\Tester\Lokale Einstellungen\Anwendungsdaten\Microsoft\Outlook
14.12.2007 11:48 270.222.336 archive2.pst
1 Datei(en) 270.222.336 Bytes
Verzeichnis von c:\Dokumente und Einstellungen\Tester\Lokale Einstellungen\Application Data\Microsoft\Outlook
20.07.2004 13:34 271.360 Outlook.pst
1 Datei(en) 271.360 Bytes
Anzahl der angezeigten Dateien:
3 Datei(en) 270.765.056 Bytes
0 Verzeichnis(se), 2.349.694.976 Bytes frei
Datentr„ger in Laufwerk D: ist Daten
Volumeseriennummer: xxx
Verzeichnis von d:\Sicherungen
21.06.2007 16:09 552.616.960 archive.pst
1 Datei(en) 552.616.960 Bytes
Anzahl der angezeigten Dateien:
1 Datei(en) 552.616.960 Bytes
0 Verzeichnis(se), 9.662.263.296 Bytes frei