Datei übers Netzwerk kopieren

Hallo nochmal!

Man hatte mir in Sachen Datei-Copieren schon gut weitergeholfen, aber leider stosse ich doch wieder auf ein Problem, wo mir keine Lösung einfällt.

Und zwar möchte ich eine Datei vom einem Rechner im Netzwerk auf den lokalen Rechner kopieren.
Bei der Ausführung bekomme ich folgenden Fehlercode:
„123 - Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datentr&aumlgerbezeichnung ist falsch.“

Habe dahingehend auch schonmal alles geändert was mir sinnvoll erschien, ohne Besserung.

Jetzt habe ich die Befürchtung dass CopyFile evtl nicht übers Lan klappt. (?)

Kurze Info zu den Dateien:
Die Quelldatei ist auf dem Rechner 192.168.168.254 Laufwerk C: Pfad \a\test und die Datei heißt a.exe.

Die Zieldatei ist korekt angegeben, denn lokal klappt das Ganze wie geschmiert.

Ist sicher ein saudoofer, leichter Fehler und ich steh mal wieder wie ein Depp davor und seh nix…

{
bool hatGeklappt = CopyFile("\\192.168.168.254\c:\a\test\a.exe", „C:\BU2\b.exe“, true);
if (hatGeklappt == false)
Memo1->Text = GetLastError();
else
Memo1->Text = „Freu!“;
}

Danke im Voraus für die Hilfe!!!

Gruß Marco

bool hatGeklappt =
CopyFile("\\192.168.168.254\c:\a\test\a.exe",
„C:\BU2\b.exe“, true);
if (hatGeklappt == false)
Memo1->Text = GetLastError();
else
Memo1->Text = „Freu!“;

Hallo,

schon mal "\\192. probiert?

Gruss Reinhard

Hallo!

CopyFile("\\192.168.168.254\c:\a\test\a.exe",

Naja, die Syntax für den Namen ist auch ein wenig anders und
außerdem sind es wirklich vier \\ die du benötigst, wie
Reinhard schon sagte.

CopyFile("\\Rechnername oder IP\Freigabename des Laufwerks\Subpfad…

Ein c: gibt es von außen nicht so einfach.

Desweiteren muß das Laufwerk freigegeben sein und der Nutzer
des Rechners muß entsprechende Rechte auf der Kiste haben.

Gruß
Stefan

Hallo!

Ich nehme an dass die Verbindung zum Zielsystem erst mal erstellt wrden muss.

Das geht mit:

CString server;
server="\\huette03\progs\PDAS";
NETRESOURCE netres;
netres.dwType = RESOURCETYPE_ANY;
netres.lpLocalName = „“;
netres.lpRemoteName = server.GetBuffer();
netres.lpProvider = NULL;
DWORD dwError = WNetAddConnection2(&netres, „“, NULL, NULL);

Schau dir mal in der Hilfe die Funktion WNetAddConnection2 an, dann dürfte alles klar sein.
Den Dateinamen musst du in UNC angeben!
Im übrigen würde ich CopyFile nicht verwende, da es recht langsam ist. Besser sleber schreiben…

Gruß Pauli!

Hallo nochmal!

Man hatte mir in Sachen Datei-Copieren schon gut
weitergeholfen, aber leider stosse ich doch wieder auf ein
Problem, wo mir keine Lösung einfällt.

Und zwar möchte ich eine Datei vom einem Rechner im Netzwerk
auf den lokalen Rechner kopieren.
Bei der Ausführung bekomme ich folgenden Fehlercode:
„123 - Die Syntax für den Dateinamen, Verzeichnisnamen oder
die Datenträgerbezeichnung ist falsch.“

Habe dahingehend auch schonmal alles geändert was mir sinnvoll
erschien, ohne Besserung.

Jetzt habe ich die Befürchtung dass CopyFile evtl nicht übers
Lan klappt. (?)

Kurze Info zu den Dateien:
Die Quelldatei ist auf dem Rechner 192.168.168.254 Laufwerk C:
Pfad \a\test und die Datei heißt a.exe.

Die Zieldatei ist korekt angegeben, denn lokal klappt das
Ganze wie geschmiert.

Ist sicher ein saudoofer, leichter Fehler und ich steh mal
wieder wie ein Depp davor und seh nix…

{
bool hatGeklappt =
CopyFile("\\192.168.168.254\c:\a\test\a.exe",
„C:\BU2\b.exe“, true);
if (hatGeklappt == false)
Memo1->Text = GetLastError();
else
Memo1->Text = „Freu!“;
}

Danke im Voraus für die Hilfe!!!

Gruß Marco

Hallo!

CopyFile("\\Rechnername oder IP\Freigabename des
Laufwerks\Subpfad…

Ein c: gibt es von außen nicht so einfach.

Genau das waren die beiden Klopper! Hab einen Backslash hinzugefügt und den Laufwerksbuchstaben weggenommen und es klappt! *freu*

Desweiteren muß das Laufwerk freigegeben sein und der Nutzer
des Rechners muß entsprechende Rechte auf der Kiste haben.

Naja, zumindest so klug war ich, das Laufwerk für alle Netzwerkuser freizugeben.

Vielen Dank für die schnelle, kompetente Hilfe!!!

Nochmal die laufende Syntax hinterher:

{
bool hatGeklappt = CopyFile("\\192.168.168.254\a\test\a.exe", „C:\BU2\c.exe“, true);
if (hatGeklappt == false)
Memo1->Text = GetLastError();
else
Memo1->Text = „Freu!“;
}

Gruß Hudel

Hallo und vielen Dank für die Mühe!

Schau dir mal in der Hilfe die Funktion WNetAddConnection2 an,
dann dürfte alles klar sein.

Ich arbeite mit dem Borland Builder 4.0 hab da in der Hilfe leider nix dergleichen gefunden. Hätte ich besser mal vorher erwähnt. Mein Fehler!

Den Dateinamen musst du in UNC angeben!

UNC bedeutet dass ich den freigegebenen Laufwerksnamen angebe und nicht „c:“, sowie \\ am Anfang, nicht wahr? Damit klappts.

Im übrigen würde ich CopyFile nicht verwende, da es recht
langsam ist. Besser sleber schreiben…

Hier siegt bei mir ein wenig die Faulheit (und das Unwissen), denn ich muss zum einen gerade mal 1.5MB kopieren und zum Anderen müsste ich mir erst mal eine ganze Menge Wissen aneignen um den Kram anders zu kopieren, wobei ich da auch nicht so ganz überzeugt bin ob ich mir da nicht doch irgendwo ein paar Fehler in die zu kopierende Datenbank haue…

Ich danke Dir trotzdem vielmals für die Hilfe!

Gruß Hudel