Daten werden nicht gefunden
-
Hallo! Vielleicht stehe ich gerade auf der Leitung, aber ich habe einen kleinen Updater geschrieben, der mit einem Klick alle Daten aus dem Verzeichnis, wo die Visual C++ 2010 Express Projekte erstellt werden, auslesen und anschließend ins Programmverzeichnis (x86) kopieren soll! Selbstverständlich, wie mich das Programm auch auffordern soll (siehe Code), nicht ohne, dass ich das Programm zuvor debugge! Ich hoffe Ihr könnt mir helfen hier! Die Systembefehle, die ich hier anwende funktionieren, in einem anderen Programm, dessen Code ich ebenfallls poste, problemlos! Das System liefert mir immer die Meldung: "Das System kann die angegebene Datei nicht finden"! Ich führe das Programm als Administrator aus! Lg Martin
P.S.: Die Pfade habe ich 5x kontrolliert!
Originalpfade:
C:\Users\Martin\Documents\Visual Studio 2010\Projects\FlightPlannerMP1.0.0.0\Debug, C:\Program Files (x86)\FlightPlannerMP1.0.0.0\Debug
C:\Users\Martin\Documents\Visual Studio 2010\Projects\FotoSync\Debug, C:\Program Files (x86)\Dropbox Sync\Debug
C:\Users\Martin\Documents\Visual Studio 2010\Projects\Höhenprogramm\Debug, C:\Program Files (x86)\Train Project MP 1.0\Debug
C:\Users\Martin\Documents\Visual Studio 2010\Projects\UpdaterMyPrograms\Debug, C:\Program Files (x86)\UpdaterMyPrograms\Debug
#include <iostream> #include <cstring> #include <fstream> #include <string> #include <Windows.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> using namespace std; int main() { /* Ich möchte das jeweilige Programm updaten. Mein Ziel ist es, nach jedem Update nur auf die Verknüpfung dieses Programms drücken zu müssen und die Updates werden automatisch ins Root Verzeichnis kopiert, sodass keine Bearbeitung der bereits erstellten Verknüpfungen vonnöten ist und ich auch nicht jedes Mal den Ordner des jeweiligen Programms extra kopieren muss */ cout << "Updates werden in den Programmordner ueberspielt! Stellen Sie bitte sicher, dass Sie auf Debuggen gedrueckt haben!" << endl; system("PAUSE"); cout << " Bitte warten..." << endl; Sleep(3000); system("Copy C:\\Users\\Martin\\Documents\\Visual Studio 2010\\Projects\\FlightPlannerMP1.0.0.0\\Debug\\FlightPlannerMP1.0.0.0.exe, C:\\Program Files (x86)\\FlightPlannerMP1.0.0.0\\Debug"); system("Copy C:\\Users\\Martin\\Documents\\Visual Studio 2010\\Projects\\FotoSync\\Debug\\FotoSync.exe, C:\\Program Files (x86)\\Dropbox Sync\\Debug"); system("Copy C:\\Users\\Martin\\Documents\\Visual Studio 2010\\Projects\\Höhenprogramm\\Debug\\Höhenprogramm.exe, C:\\Program Files (x86)\\Train Project MP 1.0\\Debug"); system("Copy C:\\Users\\Martin\\Documents\\Visual Studio 2010\\Projects\\UpdaterMyPrograms\\Debug\\UpdaterMyPrograms.exe, C:\\Program Files (x86)\\UpdaterMyPrograms\\Debug"); system("PAUSE"); return 0; }
-
#include <iostream> #include <cstring> #include <fstream> #include <string> #include <Windows.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> using namespace std; int main() { cout << "Hallo in Kürze werden alle Daten aus Kamera Uploads in Ihrer Dropbox ins Temporary Verzeichnis am Desktop verschoben!" << endl; cout << "Wollen Sie starten?" << endl; bool bBestaetigung; cin >> bBestaetigung; while (bBestaetigung == 1) { Sleep(3600000); system("Move C:\\Users\\Martin\\Dropbox\\Kamera-Uploads\\*.jpg, C:\\Users\\Martin\\Desktop\\Temporary"); system("Move C:\\Users\\Martin\\Dropbox\\Kamera-Uploads\\*.mp4, C:\\Users\\Martin\\Desktop\\Temporary"); system("Move C:\\Users\\Martin\\Dropbox\\Kamera-Uploads\\*.png, C:\\Users\\Martin\\Desktop\\Temporary"); cout << "Vorgang erfolgreich abgeschlossen!" << endl; cout << "Wollen Sie starten?" << endl; cin >> bBestaetigung; } cout << "Ok... Das Progamm wird nun beendet!" << endl; Sleep(3000); return 0; }
-
Für Pfade mit Leerzeichen brauchst du Anführungsstriche um den ganzen Pfad. Außerdem ist mir das Komma nach dem ersten Pfad sehr suspekt, scheint aber bei einem schnellen Test hier keine Probleme zu machen. Gibt es irgendwelche Meldungen?
-
sebi707 schrieb:
Außerdem ist mir das Komma nach dem ersten Pfad sehr suspekt, scheint aber bei einem schnellen Test hier keine Probleme zu machen. Gibt es irgendwelche Meldungen?
Haha, krass, das geht wirklich!

Allerdings "frisst" er das Komma nur wenn man keine "" verwendet.
Alsomove "file.txt," blubberwartet dann wirklich ein File namens "file.txt,".
-
sebi707 schrieb:
Für Pfade mit Leerzeichen brauchst du Anführungsstriche um den ganzen Pfad. Außerdem ist mir das Komma nach dem ersten Pfad sehr suspekt, scheint aber bei einem schnellen Test hier keine Probleme zu machen. Gibt es irgendwelche Meldungen?
Also eher so:
system("Move \"Quelle\", \"Ziel\"");Das Komma kannst du dann evtl. weglassen. Bin aber Linuxer, hab von Win kein Plan...
Aber ehrlich, ihr habt da doch sowas wie PowerShell bzw. eine einfache Batch-Datei
müsste doch dafür reichen?Unter Linux würde ich auch einfach nur ein Shell-Script schreiben, wenn es mehr
wird halt Perl. Aber ein C++-programm zum kopieren, hmm, ich weiß nicht.Gute Nacht,
dirkski
-
dirkski schrieb:
Also eher so:
system("Move \"Quelle\", \"Ziel\"");Das Komma kannst du dann evtl. weglassen. Bin aber Linuxer, hab von Win kein Plan...
Bin Windowser und kann dir als solcher sagen dass das Komma da total unüblich ist. Hat mich echt verwundert dass das überhaupt erlaubt ist.
Also einfachsystem("Move \"Quelle\" \"Ziel\"");dirkski schrieb:
Aber ehrlich, ihr habt da doch sowas wie PowerShell bzw. eine einfache Batch-Datei
müsste doch dafür reichen?Das einzige was ich da sehe was in nem einfachen Batch-File nicht trivial ist ist das Warten (1x 1 Stunde 1x 3 Sekunden).
Geht aber auch, indem manpingmisbraucht::: 3600 Sekunden warten ping -n 3601 127.0.0.1 >NUL
-
hustbaer schrieb:
dirkski schrieb:
Aber ehrlich, ihr habt da doch sowas wie PowerShell bzw. eine einfache Batch-Datei
müsste doch dafür reichen?Das einzige was ich da sehe was in nem einfachen Batch-File nicht trivial ist ist das Warten (1x 1 Stunde 1x 3 Sekunden).
Geht aber auch, indem manpingmisbraucht::: 3600 Sekunden warten ping -n 3601 127.0.0.1 >NULWat ??? Wie arm ist das denn? Ihr habt kein sleep? Na, dafür könnte man ja ein C++-Progi schreiben (eher C)

Edit: Quoting korrigiert....
-
Danke für die Hinweise bezüglich dem Pfad. Funkt nun so wie ich es mir erwarte. Ja es ist im Grunde unnötig, aber ich stecke ziemlich in den Kinderschuhen, deshalb gehe ich sofort davon aus, dass ich, wenn ich etwas Individuelles vom System will, ein eigenes Programm schreiben muss. Danke vielmals für den Hinweis mit dem Script bzw der Batch Datei werde ich mir genauer ansehen.
Andere frage nebenbei (stammt auch noch aus den Kindershuhen heraus und das möchte ich einfach nur wissen, damit ich auch für die zukünftige Programmierung Bescheid weiß, ob ich es richtig verstanden habe) Endet nachfolgendes Programm in einer Endlosschleife? Wenn ja, tut es genau das, was ich will! Nämlich ein ständiges Sync im Stundentakt auch ohne Neustart des Systems. Die Programmverknüpfung liegt im Autostart - Ordner.
Danke vorab und LGMartin
#include <iostream> #include <cstring> #include <fstream> #include <string> #include <Windows.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> using namespace std; int main() { cout << "Hallo in Kürze werden alle Daten aus Kamera Uploads in Ihrer Dropbox ins Temporary Verzeichnis am Desktop verschoben! Sie können das Programm jederzeit stoppen, indem Sie 'Schliessen druecken!" << endl; cout << "Wollen Sie starten?" << endl; bool bBestaetigung; cin >> bBestaetigung; while (bBestaetigung == 1) { Sleep(3600000); system("Move C:\\Users\\Martin\\Dropbox\\Kamera-Uploads\\*.jpg, C:\\Users\\Martin\\Desktop\\Temporary"); system("Move C:\\Users\\Martin\\Dropbox\\Kamera-Uploads\\*.mp4, C:\\Users\\Martin\\Desktop\\Temporary"); system("Move C:\\Users\\Martin\\Dropbox\\Kamera-Uploads\\*.png, C:\\Users\\Martin\\Desktop\\Temporary"); cout << "Vorgang erfolgreich abgeschlossen!" << endl; cout << "Wollen Sie starten?" << endl; } cout << "Ok... Das Progamm wird nun beendet!" << endl; Sleep(3000); return 0; }
-
venezianer27 schrieb:
Danke für die Hinweise bezüglich dem Pfad. Funkt nun so wie ich es mir erwarte. Ja es ist im Grunde unnötig, aber ich stecke ziemlich in den Kinderschuhen, deshalb gehe ich sofort davon aus, dass ich, wenn ich etwas Individuelles vom System will, ein eigenes Programm schreiben muss. Danke vielmals für den Hinweis mit dem Script bzw der Batch Datei werde ich mir genauer ansehen.
Andere frage nebenbei (stammt auch noch aus den Kindershuhen heraus und das möchte ich einfach nur wissen, damit ich auch für die zukünftige Programmierung Bescheid weiß, ob ich es richtig verstanden habe) Endet nachfolgendes Programm in einer Endlosschleife? Wenn ja, tut es genau das, was ich will! Nämlich ein ständiges Sync im Stundentakt auch ohne Neustart des Systems. Die Programmverknüpfung liegt im Autostart - Ordner.
Danke vorab und LGMartin
Naja, ein while (true) reicht für eine Endlosschleife. Vorrausgesetzt du willst mit dem cin >> bBestaetigung; nur auf einen Tastendruck zum starten warten...
Ehrlich gesagt weiß ich gerade nicht was bei cin nach bool für eine Eingab erwartet wird? Eine Zahl? oder muss man "true" eingeben....
Bei mir wird bool(true) nach int(-1) ?glaub? gecastet und bool(false) nach int(0) !sicher! ... Deine Schleife würde dann nie ausgeführt... Aber ich geh jetzt schlafen. Nacht
-
dirkski schrieb:
Wat ??? Wie arm ist das denn? Ihr habt kein sleep? Na, dafür könnte man ja ein C++-Progi schreiben (eher C)

Ja, gibt ein paar Sachen die fehlen wo ich echt nicht verstehe WIESO die nach Jahrzehnten DOS/Windows immer noch fehlen.
Sleepwäre eine solche Sache.
Datum+Zeit in nem definierten, Locale-unabhängigen Format in eine Environment-Variable zu bekommen wäre eine andere.Mehr fällt mir jetzt schnell nicht ein, aber gab noch ein paar andere Sachen wo ich mich sehr gewundert + geärgert habe.
Achja, ein "on error go to" wäre auch nett. Damit man nicht in jeder 2. Zeile ein verdammtes "
if "%errorlevel%" neq "0" ..." schreiben muss.
-
dirkski schrieb:
Wat ??? Wie arm ist das denn? Ihr habt kein sleep? Na, dafür könnte man ja ein C++-Progi schreiben (eher C)

Oder als Batch.
Man hat auch choice, den Ping-Trick nahm man dann zunehmend, weil man die Syntax von choice immer vergaß.
http://ss64.com/nt/choice.htmlUnd neuerdings ist das Problem sogar offiziell gefixt, wobei man zugeben muss, daß Win7 http://ss64.com/nt/timeout.html erst kürzlich rausgekommen ist und husti von timeout noch gar nichts wissen konnte.
-
hustbaer schrieb:
ein verdammtes "
if "%errorlevel%" neq "0" ..." schreiben muss.

Maso-Syntax für "if errorlevel 1 ..."

-
IIRC kann
%ERRORLEVEL%auch negativ sein, und dann greiftIF ERRORLEVEL 1nicht.
-
volkard schrieb:
Und neuerdings ist das Problem sogar offiziell gefixt, wobei man zugeben muss, daß Win7 http://ss64.com/nt/timeout.html erst kürzlich rausgekommen ist und husti von timeout noch gar nichts wissen konnte.
Ohne Zynismus kannst du nicht, was?
-
hustbaer schrieb:
IIRC kann
%ERRORLEVEL%auch negativ sein, und dann greiftIF ERRORLEVEL 1nicht.Solche buggy Programme habe ich noch nicht vor der Linse gehabt.
-
hustbaer schrieb:
volkard schrieb:
Und neuerdings ist das Problem sogar offiziell gefixt, wobei man zugeben muss, daß Win7 http://ss64.com/nt/timeout.html erst kürzlich rausgekommen ist und husti von timeout noch gar nichts wissen konnte.
Ohne Zynismus kannst du nicht, was?
Naja, hast schon ganz schön dick aufgetragen mit
hustbaer schrieb:
dirkski schrieb:
Wat ??? Wie arm ist das denn? Ihr habt kein sleep? Na, dafür könnte man ja ein C++-Progi schreiben (eher C)

Ja, gibt ein paar Sachen die fehlen wo ich echt nicht verstehe WIESO die nach Jahrzehnten DOS/Windows immer noch fehlen.
Sleepwäre eine solche Sache.
-
hustbaer schrieb:
Datum+Zeit in nem definierten, Locale-unabhängigen Format in eine Environment-Variable zu bekommen wäre eine andere.
Dazu benutze ich for und ein VBS-Script.
-
volkard schrieb:
hustbaer schrieb:
Datum+Zeit in nem definierten, Locale-unabhängigen Format in eine Environment-Variable zu bekommen wäre eine andere.
Dazu benutze ich for und ein VBS-Script.
Mir ist klar dass das geht, aber es ist *umständlich*.
-
Naja, ein while (true) reicht für eine Endlosschleife. Vorrausgesetzt du willst mit dem cin >> bBestaetigung; nur auf einen Tastendruck zum starten warten...
Ehrlich gesagt weiß ich gerade nicht was bei cin nach bool für eine Eingab erwartet wird? Eine Zahl? oder muss man "true" eingeben....
Bei mir wird bool(true) nach int(-1) ?glaub? gecastet und bool(false) nach int(0) !sicher! ... Deine Schleife würde dann nie ausgeführt... Aber ich geh jetzt schlafen. Nacht
Hallo, sorry war jetzt ne Weile nicht online, weil ich am Samstag früh weg musste, und dann keinen Empfang hatte. Zu deiner Antwort dirkski kann ich nur sagen, dass du Recht hast, das hab ich wohl vergessen, im Code anzugeben, wäre hilfreich!

Jedenfalls "1" wird als richtiger Antwort erwartet, und alles andere, soll die Schleife üb erspringen und es funkt auch super. Habs in der Nacht auf Samstag und gestern nochmal durchlaufen lassen und er führt die Schleife etliche Male durch und es würde heute noch laufen, hätte ich nicht abgebrochen! Danke euch allen für eure Hilfe. Eure weiteren Beiträge bin ich grad am Lesen! Lg
-
venezianer27 schrieb:
Naja, ein while (true) reicht für eine Endlosschleife. Vorrausgesetzt du willst mit dem cin >> bBestaetigung; nur auf einen Tastendruck zum starten warten...
Ehrlich gesagt weiß ich gerade nicht was bei cin nach bool für eine Eingab erwartet wird? Eine Zahl? oder muss man "true" eingeben....
Bei mir wird bool(true) nach int(-1) ?glaub? gecastet und bool(false) nach int(0) !sicher! ... Deine Schleife würde dann nie ausgeführt... Aber ich geh jetzt schlafen. Nacht
Hallo, sorry war jetzt ne Weile nicht online, weil ich am Samstag früh weg musste, und dann keinen Empfang hatte. Zu deiner Antwort dirkski kann ich nur sagen, dass du Recht hast, das hab ich wohl vergessen, im Code anzugeben, wäre hilfreich!

Jedenfalls "1" wird als richtiger Antwort erwartet, und alles andere, soll die Schleife üb erspringen und es funkt auch super. Habs in der Nacht auf Samstag und gestern nochmal durchlaufen lassen und er führt die Schleife etliche Male durch und es würde heute noch laufen, hätte ich nicht abgebrochen! Danke euch allen für eure Hilfe. Eure weiteren Beiträge bin ich grad am Lesen! LgOk, Sorry, bool(false) ist bei mir auch int(1). Ich weiß aber nicht ob das definiert ist. Falls irgendwo bool(false) = int(-1) ist klappt das nicht.
Weil Du in einen bool einliest kommen immer die Werte true und false raus. Wobei bei dir und mir scheinbar true = int(1) und false = int(0) ergibt.
Wenn ich hier im Beispiel unten Text eingebe (auch true) wird daraus bool(false) = 0.
Wenn ich irgendeine Zahl ungleich 0 eingebe (-12, 42 etc.) wird diese nach bool konvertiert, also bei dir und mir zu 1 = true.
Das mus aber evtl. nicht sein. Bei anderen Compilern könnte es auch -1 sein... Die Eingabe von 0 ergibt natürlich 0....#include <iostream> // bei g++ (hier 4.9) ist bool(true) = 1 und bool(false) = 0 // Ist das eigentlich definiert was false ist? int main () { bool b = true; std::cout << "bool = true = " << b << "\n"; // Ergibt hier 1 b = 0; // Null ist false std::cout << "bool = 0 = " << b << "\n"; // Ergibt hier 0 b = -42; // Alles ungleich Null ist true std::cout << "bool = -42 = " << b << "\n"; // Ergibt hier 1 b = false; std::cout << "bool = false = " << b << "\n" // Ergibt hier 0 "Eine Zahl eingeben: "; std::cin >> b; std::cout << "Zahl war: " << b << "\n"; }Du solltest aus:
... cin >> bBestaetigung; while (bBestaetigung == 1) { ...folgendes machen...
... cin >> bBestaetigung; while (bBestaetigung) // Weg mit dem == 1 { ... // Bei der Eingabe wird sowieso jede Zahl ausser 0 // bei dir nach 1 konvertiert. 1 ist sowieso true // und damit auch die Schleifenbedingung wahr...dann bist du auf der sicheren Seite falls du mal über einen Compiler stolperst wo bool(true) = -1 ist...
hth
dirkskiEdit: falls du bBestaetigung == 1 für lesbarer hältst mach da einfach ein bBestaetigung != 0 raus...