dateiname einlesen



  • also i hab leider dazu nix gefunden aber kann man den namen von verschiedenen datein in einem verzeichnis in ein feld einlesen so das ich z.b. alle nacheinander automatisch umbennen kann ??



  • C kennt kein Dateisystem, du musst also betriebssystemspezifische API's verwenden. Mit C++ zB ➡ boost::filesystem, unter Windows ➡ FindFirstFile( ) und co.

    Greetz, Swordfish



  • Naja, da er C machst is boost wohl nicht angebracht oder? 😉

    _findfirst
    _findnext
    _wfinddata_t
    _wfindnext
    _findclose
    

    Könntest du z.B. auch verwenden um Dateien zu suchen.

    grüße



  • da der quelltext in greifbarer naehe war:

    #include <stdio.h>
    #include <dirent.h>
    #include <string.h>
    
    int main()
    {
    	DIR 		*dip;
    	struct dirent  *dit;
    
    	int i = 0, pos = 0, len;
    	char path[] = "/", c;
    
    	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)
    			{
    				printf("%s\n", dit->d_name);
    			}
    		}
    	}
    
    	if(closedir(dip) == -1)
    	{
    		printf("fehler beim schliessen des verzeichnisses\n\n");
    		return 0;
    	}
    
    	getchar();
    }
    


  • ich weiss wie man einfach so mal dateien renamed in c aber das ist halt aufwengig bei x dateien deswegen meine frage....

    danke moh fuer den quelltext ich werde das mal testen.... und verstehn zu versuchen...

    David_pb:

    hast du da ne site oder aehnliches wo man da smal nachlesen kann....



  • David_pb schrieb:

    _findfirst
    _findnext
    _wfinddata_t
    _wfindnext
    _findclose
    

    Tja, nicht so toll. Anstatt die Microsoft-Erweiterung <io.h> und sich damit auf einen Microsoft-Compiler festzulegen wäre es unter Windows wohl angebrachter, die WinAPI zu verwenden.

    Greetz, Swordfishx



  • hast du da n bisl mehr infos wo man das nachlesen kann wie was wo etc...? ^^

    will nur ein einfaches programm, das die ganzen dateien nacheinander einliest und man davor den pfad festlegen muss wo sie sind und wie sie dann heissen sollen.... nix aufwendiges... soll nur helfen meine bilder von der diggicam schoen zu ordnen....



  • Also die Windows Version? Schau dir den Link FindFirstFile( ) in meinem ersten Post dieses Threads an...

    Greetz, Swordfish



  • 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); 
                }
    

    soweit geht das programm sehr gut.... ich kopier die exe in das verzeichnis oindem die dateien zum umbennen liegen führt man die exe aus wird alles richtig umbenannt.... so aber das funktioniert nur wenn die exe in dem verzeichnis mit den dateien fuer das Umbennen liegt lieght die exe anderswo der pfad zu den dateien den ich angeb is richtig etc... nur diesmal benennt er sie nicht um... alles andere funktioniert einwandfrei, listet auch die dateien richtig auf etc....

    durch die ausgabe printf("%s\n", dit->d_name); weiss ich das er alle dateien aus dem verzeichnis richtig gelesen hat, zeigt dann au den richtigen umbenannten namen an durch printf("%s\n",neu); aber gemacht hat er es definitiv nicht...

    ist halt doof wenn die datei im gleichen dir sein muss da sie auch mit umbenannt wird und man wieder was zum "schutz" reinbauen muesste...

    hier ist das programm zum testen:
    http://4912.style-delicate.de/files/rename.exe



  • Übergib doch deinem Programm ein Argument, welches das zu bearbeitende Verzeichnis angibt. Dann kannst du entweder mit SetCurrentDirectory( ) dahin wechseln, oder die Pfade absolut angeben.

    BTW: deine .exe wird höchstwahrscheinlich keiner ausführen wollen. Gib Source.

    Greetz, Swordfish



  • den pfad muss der benutzer ja eingeben... oder wie meinst du das jetzt genau ???
    will das so machen das man nichts vorgefertigt hat....

    der source:
    http://4912.style-delicate.de/files/rename.txt



  • toxi schrieb:

    will das so machen das man nichts vorgefertigt hat...

    Wie meinst du das? Nur mit der Standard C Library?

    Für welches Betriebssystem soll's denn sein:

    a) Windows
    b) UNIX/GNU
    c) MacOS
    d) ReactOS
    e) Multics
    f) OS/2
    e) ...

    ???

    Deine Version mit der "dirent.h" ist weder sonderlich Portabel noch ANSI-C.

    Greetz, Swordfish



  • das soll ausschliesslich fuer mich sein und soll unter windows xp laufen was es auch tut.... es bleibt nur noch das mit dem umbenennen zu tun 😞

    ich meinte damit das ich egal wo die datei etz liegt den programm den pfad zu dem verzeichniss wo die dateien zum umbennen liegen mitteile und dann das programm loslegt... fertsch ^^

    i komm einfach nicht drauf wieso da snur funkt wenn die exe im selben dir liegt... aber er die dateien richtig auslesen kann....


Anmelden zum Antworten