myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[C] Dateien aus Unterordner Ausschneiden

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 21.01.14, 14:32   #1
Odatas
Erfahrenes Mitglied
 
Registriert seit: Nov 2011
Beiträge: 648
Bedankt: 326
Odatas ist unten durch! | -158 Respekt PunkteOdatas ist unten durch! | -158 Respekt Punkte
Standard [C] Dateien aus Unterordner Ausschneiden

Also ich habe ein Ordner da sind 1000 Ordner drinne. Ich möchte aus den 1000 Ordner alle Datein in den Obergeordneten Ordner kopieren. Und danach die Unterordner löschen.

Ich hatte schon folgendes gefunden:

Zitat:
CopyFile("C:\\lol.bat", "C:\\Ordner\\lol.bat", 0);
Scheint aber nur unter Windows zu laufen. Was in erster Linie ok ist aber ich programmiere gerne Betriebssystemunabhängig. Gibt es da also etwas?

Desweiteren weiß ich grad nicht mehr wie man die Dateinamen aus einem Ordner auslesen kann. Da gabs doch irgendwie einen Trick oder? und vor allem wie ist das mit Unterordnern in dem Unterordner? Rekursiv währe da wohl eine Möglichkeit. Die tiefsten Eben sind auch nur 5 Ordner tief...

Ein paar Ideen oder Anregungen?
Odatas ist offline   Mit Zitat antworten
Ungelesen 21.01.14, 14:59   #2
HappyMike34
Erfahrenes Mitglied
 
Registriert seit: Mar 2010
Beiträge: 676
Bedankt: 655
HappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt Punkte
Standard

warum willst du das in C programmieren? Da gibt es doch viel einfachere Möglichkeiten.

Du kannst z.B. alle Dateien suchen und die gefundenen einfach in jeden beliebigen Ordner kopieren/verschieben. In Windows geht das im Explorer, in Linux mit dem Befehl "find"

Code:
find . -type f -exec mv {} <destdir> \;
__________________
my brain has two parts, the right and the left...on the left, there is nothing right...on the right, there is nothing left
HappyMike34 ist offline   Mit Zitat antworten
Ungelesen 21.01.14, 15:21   #3
Odatas
Erfahrenes Mitglied
 
Registriert seit: Nov 2011
Beiträge: 648
Bedankt: 326
Odatas ist unten durch! | -158 Respekt PunkteOdatas ist unten durch! | -158 Respekt Punkte
Standard

Weil ich es sehr oft machen muss und ein Doppelklick einfacher als ein Befehl schreiben ist....
Odatas ist offline   Mit Zitat antworten
Ungelesen 21.01.14, 15:24   #4
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.856
Bedankt: 1.701
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Mal als Vorschlag, nicht wirklich getestet.

Code:
#include <stdio.h>
#define BUFSIZE 1024

int main (int argc, char **argv)
{
    size_t len = 0 ;
    const char src[] = "foo.txt" ;
    const char dest[] = "bar.txt" ;
    char buffer[BUFSIZE] = { '\0' } ;

    FILE* in = fopen( src, "rb" ) ;
    FILE* out = fopen( dest, "wb" ) ;

    if( in == NULL || out == NULL )
    {
        perror( "An error occured while opening files!!!" ) ;
        in = out = 0 ;
        return 1;
    }
		while( (len = fread( buffer, BUFSIZE, 1, in)) > 0 )
		{
			fwrite( buffer, BUFSIZE, 1, out ) ;
		}

		fclose(in) ;
		fclose(out) ;

		if(  remove(src) )
		{
			puts( "File successfully moved!\n" ) ;
		}
		else
		{
        perror( "An error occured while moving the file!" ) ;
		}
	}
}
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 22.01.14, 15:20   #5
Odatas
Erfahrenes Mitglied
 
Registriert seit: Nov 2011
Beiträge: 648
Bedankt: 326
Odatas ist unten durch! | -158 Respekt PunkteOdatas ist unten durch! | -158 Respekt Punkte
Standard

Das ist nicht ganz das was ich wollte aber danke für die Anregung. Im Grunde muss ich jetzt nur noch die Dateinamen aus den Ordner auslesen und dann copieren. Da ich aber auch Videos und Musikdateien Kopieren muss wird mir fopen glaub ich nicht weiter helfen.
Odatas ist offline   Mit Zitat antworten
Ungelesen 22.01.14, 17:40   #6
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.856
Bedankt: 1.701
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Ich habe das gerade erfolgreich mit mp3, avi und txt Dateien getestet.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 24.01.14, 12:44   #7
Odatas
Erfahrenes Mitglied
 
Registriert seit: Nov 2011
Beiträge: 648
Bedankt: 326
Odatas ist unten durch! | -158 Respekt PunkteOdatas ist unten durch! | -158 Respekt Punkte
Standard

Genau mit dem Code? Ich weiß leider nicht wie ich die Dateinamen auslesen kann. Das ist mein eigenntliches Problem. Alle Dateinamen nacheinander auslesen.


Aber ist ja schonmal gut zu wissen dass das mit Fopen auch funktioniert.
Odatas ist offline   Mit Zitat antworten
Ungelesen 24.01.14, 16:40   #8
aggi987
Anfänger
 
Registriert seit: Jan 2010
Beiträge: 18
Bedankt: 14
aggi987 wird langsam von ratten respektiert | 123 Respekt Punkteaggi987 wird langsam von ratten respektiert | 123 Respekt Punkte
Standard

Nicht so einfach das Betriebssystemunabhängig zu machen. Unter Linux/Unix gibt es dafür die Funktionen
opendir/readdir/closedir. Unter Windows geht das anders:
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Sonst gibt es noch Portierungen vom gcc-Compiler nach Windows ( Cygwin [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
die dann auch die Unix-Funktionen haben.
aggi987 ist offline   Mit Zitat antworten
Ungelesen 24.01.14, 17:49   #9
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.856
Bedankt: 1.701
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Ja mit dem Code. Um Dateinamen in einem Verzeichnis einzulesen kannst du [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] nehmen. Gibt es Für windows oder Linux.

Alternativ kannst du natürlich auch deinen Code jeweils für Windows und Linux schreiben und dann mit preprocessor Macros arbeiten. Bsp:
#ifdef WIN32
//mach was
#endif

EDIT: Mit C ist das alles schon ein bischen aufwändiger. Mit einer S*****sprache wie Perl dürfte das weniger Arbeit sein, wenn vermtl auch langsamer.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 26.01.14, 21:40   #10
Odatas
Erfahrenes Mitglied
 
Registriert seit: Nov 2011
Beiträge: 648
Bedankt: 326
Odatas ist unten durch! | -158 Respekt PunkteOdatas ist unten durch! | -158 Respekt Punkte
Standard

Zitat:
Zitat von spartan-b292 Beitrag anzeigen
Mit C ist das alles schon ein bischen aufwändiger. Mit einer S*****sprache wie Perl dürfte das weniger Arbeit sein, wenn vermtl auch langsamer.

Relevant XKCD: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Odatas ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr.


Sitemap

().