Brauche eure Hilfe

Hallo erst mal, ;-)

Ich brauche ganz dringend nen guten Rat. Habe Borland C++ Builder 6 und will nen prog basteln welches mir helfen soll einen haufen Datein auf einmal umzu bennen.

Das problem hierbei ist das ich zwei Informationen aus der Datei auslesen muss die dann wiederum als Teil in den neuen Dateinamen einfließen soll.

zum Bsp. org. Datei. BU_DDUA07.lis11 soll danach 200505_6111.txt heißen.

"200505" ware das Datum und 6111 wäre ne Inventurnummer zum beispiel.
Diese Beiden Info´s will ich aus der Datei BU_DDUA07.lis11 auslesen.

ich habe momentan null peilung :eek: HILFE ich habe keine Lust ca. 3000 Datein jeden Monat per Hand umzuschreiben

Danke im vorraus

ich nehme jede Hilfe dankend an! :(
 
Kannst du überhaupt C++?
Du solltest mal logisch an dein Problem rangehen...so schwer ist dein Problem nämlich nicht zu lösen...
Du musst (wahrscheinlich[kann ich nich genau sagen, weil deine Beschreibung etwas mager ist]) den Ordner mit diesen Dateien auslesen und z.B. alle Dateinamen in ein Array packen.
(Also nur ein Array mit den ganzen Namen).
Dann halt jede Datei im Array auslesen und je nach Inhalt umbenennen.
Fertig! :rolleyes:

( soviel zum logischen Ansatz ;-] )

greetz
daddz
 
ersteinmal danke für die Antwort!
die grundlagen sind vorhanden soviel zu dem das ich C++ mal gelernt habe.

Folgendes Problem:

Datei 1 : BU_DDUA07.lis11 Inhalt der datei die ausgelesen werden muss: Datum 20.05.05
und Inventurnummer 6111

Datei 2 . BU_DDUA07.lis12 Inhalt der datei die ausgelesen werden muss: Datum 21.05.05
und Inventurnummer 6357
und das ganze ca. 3000 mal

so würd ich an die Sache vom logischen auch rangehen aber bei der Umsetzung fehlt mir der Durchblick sorry :(
 
Hy!

Leider blockiert dein Webhoster den Zugriff auf das File, ich bekomme immer eine Fehlermeldung das das externe Linken nicht erlaubt ist.

mfg
uhu01
 
Hy!

@daddz:Hatte ich schon versucht, lag aber daran das ich das Referrer Logging einschalten musste.

@marcaurel1984:Hier mal ne kurze Idee wie ich das machen würde:

  1. Mit findfirstfile der Reihe nach die Dateien in dem Ordner durchgehen, und z.B. in einer std::list speichern
  2. Vier Strings einlesen, das sind die ersten vier Wörter, sie können verworfen werden.
  3. Eine Zahl einlesen diese ist die Artikelnummer und muss gespeichert werden.
  4. Wieder zwei Strings einlesen die verworfen werden.
  5. Abwechselnd eine Zahl einlesen, und den Zeiger in der Datei um eine Stelle weiterschieben. Dies solange machen, bis du das ganze Datum hast.
  6. Mit den Erhaltenen Informationen das File umbenennen

Sollte das File immer mit "STUDS NACH WARENGRUPPEN SORTIERT " beginnen kannst du den Filepointer natürlich gleich an die richtigen Stellen setzen, ohne die Strings einzeln einzulesen. Sind es am Anfang nicht immer 4 Wörter musst du nach jedem eingelesenen String kontrollieren ob es eine Zahl ist, und diese dann speichern, dann suchst du den folgenden String "Datum" und liest das Datum wie oben beschrieben ein.

Ich hoffe ich konnte die ein wenig weiterhelfen. Wenn ich noch ein wenig genauer werden soll ein nur sagen.


mfg
uhu01
 
Zuletzt bearbeitet:
Hy!

Also etwas genauer:

Zuerst legst du einen neuer Container vom Typ std::vector an, der eine String aufnimmt.
Code:
std::vector< std::string > vecFileNames
Dann gehst du mit findfirstfile den Ordner durch und speicherst alle Dateinamen in dem std::vector ab. An dem Link oder in der MSDN findest du alles was du zu findfirstfile brauchst.
Nun gehst du in einer Schleife alle Einträge der Reihe nach durch, öffnest sie, und ließt die Daten aus.
Code:
fstream fsFile;
string strDummy;
char cDummy;
int iArtikelNum, iDay, iMonth, iYear;
fsFile.open( "D:\\bsp.txt", ios::in);

fsFile >> strDummy;
fsFile >> strDummy;
fsFile >> strDummy;
fsFile >> strDummy;
fsFile >> iArtikelNum;
fsFile >> strDummy;
fsFile >> strDummy;
fsFile >> iDay;
fsFile.read( &cDummy, 1);
fsFile >> iMonth;
fsFile.read( &cDummy, 1);
fsFile >> iYear;
Nun hast du alle Relevanten Daten gepeichert, und kannst mit movefile problemlos alle Dateien umbenennen.
Ob das ganze so funktioniert, hängt natürlich davon ab ob die Datei immer so aussieht, u.U. musst du das ganz etwas abändern.

Sollte z.B. am Anfang immer STUDS... stehen kannst du statt den ersten fsFile << dummy; auch fsFile.sekkg( 39); schreiben.

Solltest du noch etwas Hilfe brauchen, einfach sagen.

mfg
uhu01
 
Zuletzt bearbeitet:
Zurück