Erstellungsdatum per rename
-
Ich habe ein Problem der Code funktionert soweit sogut. aber möchte das file nicht manuell umbenennen. Sondern das automatisch das Erstellungdatum von der Datei angehängt wird. kann mir bitte jemand helfen.
#include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <string.h> #define MAX 20 char *my_itoa(int wert, int laenge) { char *ret =(char *) malloc(laenge+1 * sizeof(char)); int i; for(i =0; i < laenge; i++) { ret[laenge-i-1] = (wert % 10) + 48; wert = wert / 10; } ret[laenge]='\0'; return ret; } int main() { DIR *dip; struct dirent *dit; int i = 0, pos = 0, len,x=1; char path[MAX]/* = "/alanya"*/, c, prefix[MAX], end[MAX], neu[MAX]; printf("\n ----- rename 0.2 -----"); printf("\n\n / -> root der aktuellen Partition\nauf der die Datei ausgefuehrt wird.\n\n"); printf("Verzeichnis:\n> "); fflush(stdin); gets(path); printf("Prefix:\n> "); fflush(stdin); gets(prefix); printf("Dateiendung:\n> "); fflush(stdin); gets(end); if((dip = opendir(path)) == NULL) { printf("fehler beim oeffnen des verzeichnisses\n\n"); return 0; } else { while((dit = readdir(dip)) != NULL) { if(strcmp(dit->d_name, ".") != 0 && strcmp(dit->d_name, "..") != 0) { strcpy(neu,prefix); strcat(neu, my_itoa(x,5)); strcat(neu, end); printf("%s\n",neu); x++; printf("%s\n", dit->d_name); rename(dit->d_name,neu); } } } if(closedir(dip) == -1) { printf("fehler beim schliessen des verzeichnisses\n\n"); return 0; } printf("\n\n"); system("PAUSE"); return 0; }
-
Da mußt du dir halt das Erstellungsdatum der Datei holen, in Textform umwandeln und mit in den Zielnamen reinkopieren, bevor du sie rename()st.
PS: Bei Code-Fragmenten wie 'fflush(stdin);' und 'system(...)' machst du dich hier nichts besonders beliebt.
-
wieso den bin recht neu?
ehm wie ist den der code dazu um das so zu realieseren?
-
desertangle schrieb:
wieso den bin recht neu?
Wieso denn nicht? Irgendwie mußt du das Datum in ein Format bekommen, das als Dateiname akzeptiert wird.
ehm wie ist den der code dazu um das so zu realieseren?
Versuch's mal mit sprintf()
-
guten morgen.
mm habe ich probiert geht nicht oder ich hbe etwas falsch gemacht.
-
Können wir hellsehen? (zumindest für mich kann ich das verneinen)
Du mußt schon zeigen, was du gemacht hat - und wie sich das "klappt nicht" äußert.
-
fflush(stdin); habe ich mit dem ausgetauscht
-
Da ist wohl Hopfen und Malz verloren. Tip von mir: Bevor du dich das nächste Mal an den Compiler setzt, lern die Grundlagen von C (inklusive der Funktionsweise der verwendeten Funktionen).
-
man könnte hier auch bissel netter umgehen.. nicht so einen auf arrogant. ich habe dies gelesen habe nur um hilfe gebeten wie man dies anders schreiben köbnnte da dies überhaupt nich im buch erwänt ist Galileo Computing.
-
Nagut, ich versuch's nochmal: sprintf() kannst du für dein fachliches Problem nehmen, um das Dateidatum in Stringform umzuwandeln. (woher du das Datum bekommst, mußt du selber wissen)
fflush(stdin) ist einfach nur undefiniert - fflush() überträgt den Puffer von Ausgabedateien nach außen, stdin ist eine Eingabedatei. (MS-Compiler haben diese Lücke genutzt und für sich festgelegt, daß fflush(stdin) dessen Eingabepuffer auskehrt)