Datein kopieren
-
ok thx
-
wenn du ne batch benutzt hast geh ich davon aus das du zugriff auf die winapi hasst?
da kannst du "CopyFile" nehmen
es geht aber auch "_trename", damit kannst du aber nur dateien verschieben
-
Die Batch Datei hab ich früher im Windows Editor geschrieben

-
Ich hab es jetz so gemacht XD aber das geht natürlich nicht:
#include <iostream> #include <windows.h> //hier ist die Kopierfunktion drinnen using namespace std; int main() { int was,wohin; cout << "Was soll kopiert werden?\n"; cin>>was; cout<<"Wohin soll kopiert werden?\n"; cin>>wohin; CopyFile(was,wohin,true); system("PAUSE"); }hatt den da keiner eine Idee?
-
Natürlich geht das nicht, du gibst der Funktion ja auch zwei std:string, obwohl sie LPCTSTR erwartet.
Probiers mal mit
CopyFile(was.c_str(), wohin.c_str(), true);Achtung: Mit Unicode-Unterstützung geht das u.U. nicht.
-
mad_martin schrieb:
Natürlich geht das nicht, du gibst der Funktion ja auch zwei std:string, obwohl sie LPCTSTR erwartet.
Schlimmer, er übergibt int-Werte

@Bassmaster: Weißt du, wie man mit Zeichenketten umgehen kann?
-
Oh, die ints hat mein Unterbewusstsein wohl ausgeblendet und durch std:strings ersetzt. Das ist ja viel schlimmer als erst angenommen

-
Ne ka wie man Zeichenketten umgehen kann

-
Bassmaster schrieb:
Ne ka wie man Zeichenketten umgehen kann

LOL
-
Aber ich hab ein neues Problem ^^
Ich hab es erst mal wieder so versucht:
#include <iostream> using namespace std; #pragma hdrstop #pragma argsused #include <windows> int main() { cout<<"kopiert ....\n"; CopyFile("e:\\test2\\testprogramm.exe","e:\\test1",true); system("PAUSE"); }wenn ich das Programm starte dann kopiert er die datei testprogramm.exe wie geplant in den ordner test1 aber wenn ich die datei aus test1 lösche und das Programm neu starte dann will er auf einmal nicht mehr kopieren. Es sei den ich ändere den Datei namen im source code sowie im ordner 2.
Hab ich da was falsche gemacht oder muss das so ?

-
Dann solltest du schnell zu den Grundlagen zurückkehren. (mit std::string geht das eigentlich recht einfach - char* lernst du noch früh genug kennen)
Punkt 1: ändere mal die Definition der Variablen in "string was,wohin;" (und binde den Header <string> ein)
Punkt 2: Für die Eingabe solltest du besser getline() verwenden (Dateinamen in Windows können Leerzeichen enthalten).
Punkt 3: Für die Übergabe an CopyFile() brauchst du char* - dafür bietet std::string die Methode c_str().PS: Und Punkt 4: CopyFile() gibt es nur auf Windows-Systemen - unter Linux kommst du damit nicht sehr weit. Der oben erwähnte Ansatz über fstream's funktioniert auf jedem System.
-
#include <iostream> #include <fstream> int main() { std::cout << "Quelle: " << std::flush; std::string file_name_source; std::getline(std::cin, file_name_source); std::cout << "Ziel: " << std::flush; std::string file_name_dest; std::getline(std::cin, file_name_dest); std::ifstream file_stream_source(file_name_source.c_str()); if (!file_stream_source) { std::cerr << "FEHLER: Datei konnte nicht kopiert werden!" << std::endl; return 1; } std::ofstream file_stream_dest(file_name_dest.c_str()); file_stream_dest << file_stream_source.rdbuf(); std::clog << "Datei kopiert!" << std::endl; }
-
Kennt wer zufällig ein Tutorial wo steht was das alles genau bedeutet
#include <iostream> #include <fstream> int main() { std::cout << "Quelle: " << std::flush; std::string file_name_source; std::getline(std::cin, file_name_source); std::cout << "Ziel: " << std::flush; std::string file_name_dest; std::getline(std::cin, file_name_dest); std::ifstream file_stream_source(file_name_source.c_str()); if (!file_stream_source) { std::cerr << "FEHLER: Datei konnte nicht kopiert werden!" << std::endl; return 1; } std::ofstream file_stream_dest(file_name_dest.c_str()); file_stream_dest << file_stream_source.rdbuf(); std::clog << "Datei kopiert!" << std::endl; }ein paar Sachen versteh ich wohl aber ein paar Sachen ist nunmal nicht alles
im Schornboeck Tutorial hab ich bei den Grundlagen darüber leider nichts gefunden 
http://tutorial.schornboeck.net/inhalt.htm
ach ja und wenn ich das Programm von (D)Evil starte und bei Quelle die Quelle eingben und bei Ziel halt das Ziel das kopiert der aber nicht -.-
-
#include <iostream> #include <fstream> std::istream& clstream(std::istream& in) { in.sync(); in.clear(); in.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); return in; } int main() { std::cout << "Quelle: " << std::flush; std::string file_name_source; std::getline(std::cin, file_name_source); std::cout << "Ziel: " << std::flush; std::string file_name_dest; std::getline(std::cin, file_name_dest); std::ifstream file_stream_source(file_name_source.c_str()); if (!file_stream_source) { std::cerr << "FEHLER: Datei konnte nicht kopiert werden!" << std::endl; clstream(std::cin); std::cin.get(); stdreturn 1; } std::ofstream file_stream_dest(file_name_dest.c_str()); file_stream_dest << file_stream_source.rdbuf(); std::clog << "Datei kopiert!" << std::endl; clstream(std::cin); std::cin.get(); }daraus machen und sehen was er dir ausgibt

-
@ (D)Evil der Compiler gibt mir folgendes aus:
[C++ Fehler] Unit1.cpp(15): E2451 Undefiniertes Symbol 'stdreturn'
[C++ Fehler] Unit1.cpp(15): E2379 In Anweisung fehlt ;
-
Klar, es sollte ja auch 'return 1;' heißen

-
Ehm ja sorry
Das stdreturn 1 soll return 1 heißen ... dann geht's^^
-
ok thx