Dateien in Ordner kopieren anhand vom Teil eines Dateinamen
Hallo,
ich bin neu hier im Forum und habe auch gleich schon meine erste Frage.
Ich suche ein Batch-Skript, oder noch eleganter einen Code fürs importieren in Visual Studio (C++) mit einem einfachem Button "z.B. Start" und eleganter Weise zwei Buttons zum Pfad Source und Destination-Pfad ändern, welches meine Dateien anhand des Dateinamens,
erkennt und einen Ordner an Hand des Dateinamens erstellt.
Hintergrund:
Auf einem USB-Stick z.B. F:\ befinden sich gesicherte .LOG und .LGX Dateien, der Dateiname setzt sich zusammen aus Jahr+Monat+Tag.LOG oder .LGX.
Diese Dateien müssen nun MONATSWEISE in einen Ordner verschoben werden, alle Dateien die z.B. den Dateinamen 201609XX tragen, sollen nun in einen noch nicht vorhandenen Ordner 2016/09 (muss gleichzeitig erstellt werden, dabei soll geprüft werden ob der Ordner schon vorhanden ist oder eben nicht, wenn vorhanden Dateien einfach reinkopieren, wenn nicht erstellen und dann kopieren) kopiert werden.
Nach dem ERFOLGREICHEM Kopiervorgang, sollen alle Dateien die vom Skript kopiert wurden, vom USB-Stick, gelöscht werden.
Wäre sehr dankbar über eure Hilfe !
ich bin neu hier im Forum und habe auch gleich schon meine erste Frage.
Ich suche ein Batch-Skript, oder noch eleganter einen Code fürs importieren in Visual Studio (C++) mit einem einfachem Button "z.B. Start" und eleganter Weise zwei Buttons zum Pfad Source und Destination-Pfad ändern, welches meine Dateien anhand des Dateinamens,
erkennt und einen Ordner an Hand des Dateinamens erstellt.
Hintergrund:
Auf einem USB-Stick z.B. F:\ befinden sich gesicherte .LOG und .LGX Dateien, der Dateiname setzt sich zusammen aus Jahr+Monat+Tag.LOG oder .LGX.
Diese Dateien müssen nun MONATSWEISE in einen Ordner verschoben werden, alle Dateien die z.B. den Dateinamen 201609XX tragen, sollen nun in einen noch nicht vorhandenen Ordner 2016/09 (muss gleichzeitig erstellt werden, dabei soll geprüft werden ob der Ordner schon vorhanden ist oder eben nicht, wenn vorhanden Dateien einfach reinkopieren, wenn nicht erstellen und dann kopieren) kopiert werden.
Nach dem ERFOLGREICHEM Kopiervorgang, sollen alle Dateien die vom Skript kopiert wurden, vom USB-Stick, gelöscht werden.
Wäre sehr dankbar über eure Hilfe !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 319249
Url: https://administrator.de/contentid/319249
Ausgedruckt am: 25.11.2024 um 06:11 Uhr
22 Kommentare
Neuester Kommentar
Schau mal unter deinen Thread ....
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Gruß
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Gruß
Soll das hier ein Silbertablett sein? So lernst du ja nie was.
Oh man, dann noch die Bestandteile des Dateinamens in der letzten Schleife rausholen schafft doch jeder C Anfänger ...
substr ist dein Freund
http://www.cplusplus.com/reference/string/string/substr/
Oh man, dann noch die Bestandteile des Dateinamens in der letzten Schleife rausholen schafft doch jeder C Anfänger ...
substr ist dein Freund
http://www.cplusplus.com/reference/string/string/substr/
substr ist dein Freund
http://www.cplusplus.com/reference/string/string/substr/
Dann setzt du Pfade zusammen prüfst ob er existiert und verschiebst. Alles mit den Standard-Methoden machbar. Man muss nur mal die Doku lesen, gerade wenn man noch nie mit C++ zu tun hatte ist das PFLICHT!
http://www.cplusplus.com/reference/string/string/substr/
Dann setzt du Pfade zusammen prüfst ob er existiert und verschiebst. Alles mit den Standard-Methoden machbar. Man muss nur mal die Doku lesen, gerade wenn man noch nie mit C++ zu tun hatte ist das PFLICHT!
CLR C++
// SortFiles.cpp : main project file.
#include "stdafx.h"
using namespace System;
using namespace System::IO;
using namespace System::Text::RegularExpressions;
int main(array<System::String ^> ^args)
{
String^ sourceroot = "C:\\quelle";
String^ targetroot = "C:\\ziel";
array <String^> ^files = Directory::GetFiles(sourceroot,"*.*");
int cnt = 0;
for each (String^ file in files){
String^ filename = Path::GetFileName(file);
Match^ m = (gcnew Regex("^(?i)(\\d{4})(\\d{2})(\\d{2})\\.(lgx|log)"))->Match(filename);
if (m->Success){
String^ year = m->Groups[1]->Value;
String^ month = m->Groups[2]->Value;
String^ targetdir = targetroot + "\\" + year + "\\" + month;
if (!Directory::Exists(targetdir)){
Directory::CreateDirectory(targetdir);
}
File::Move(file,targetdir + "\\" + filename);
Console::WriteLine("Moved file '" + file + "' to folder '" + targetdir + "'");
cnt++;
}
}
Console::WriteLine("Fertig. " + cnt + " Datei(en) verschoben");
Console::WriteLine("\nTaste drücken zum beenden...");
Console::ReadLine();
return 0;
}
Hallo Nils50122.
Die ersten 4 Ziffern beliebig, hast du ja schon. Du brauchst also an dein Suchpattern nur noch bspw. 10 für Oktober anzuhängen.
Grüße
rubberman
Visual Studio (C++)
Am liebsten wäre mir C++
mein ERSTES C Projekt
Was denn nun, C oder C++? Das sind 2 Sprachen, die kaum unterschiedlicher sein könnten.mit einem einfachem Button
eine Oberfläche habe ich schon gebastelt
Dann ist es weder C, noch C++. Grafische Oberflächen gehören nicht zum Sprachstandard. Nicht mal die eigentliche Aufgabe deines Programms ließe sich ohne Verwendung der Windows API umsetzen. Keine Ahnung, was du da tust.Wie setze ich nun für den Monat die ersten vier Ziffern auf beliebig und lasse ihn ab der fünften Ziffer nach dem Monat suchen?
Das hat nun überhaupt nichts mehr mit C oder C++ zu tun...Die ersten 4 Ziffern beliebig, hast du ja schon. Du brauchst also an dein Suchpattern nur noch bspw. 10 für Oktober anzuhängen.
Grüße
rubberman
Klar würde ich auch machen, mit dem Mix hat er angefangen, dann kriegt er auch Mix weil er von Klicki-Bunti sprach dachte ich direkt an die CLR-Projects in VS
ATL/MFC/CLR and what the fuck....sonst noch, no one knows what he wants.
ATL/MFC/CLR and what the fuck....sonst noch, no one knows what he wants.
Ich suche nun EINEN Code für Visual Studio der sich hinter dem Button "Sichern" verbirgt
Zum krumbiegen . Ich glaub du versuchst es erst mal mit VB.Net und C# für den Anfang deiner Programmiererkarriere ...Beispielcode s. oben. und @rubberman
C#
c# nicht gleich C++ !!!!
obigen Code kannst du mit da es die CLR verwendet genauso mit c# abbilden, da es die normalen NET Methoden verwendet. Einfach mal ansehen und nach c# konvertieren.