Ordner in neuen Ordner kopieren

Hmmm, schade dachte ich bekomms alleine hin…

Moin,

folgendes - habe einen Quell-Ordner/Verzeichnis und ein Ziel-Verzeichnis.

 $\_SESSION['ordner']; $target;

Augegeben schaut dies so aus -->

($\_SESSION['ordner'])--\>Z:\verzeichnis1\verzeichnis2\verzeichnis3\Der eigentlich Ordner

($target)--\>c:/test/Ordner1

Kopieren tu ich so -->

copy($\_SESSION['ordner'], $target); 

Und Fehlermeldung lautet so -->

Warning: copy() [function.copy]: The first argument to copy() function cannot be a directory in C:\xampp\htdocs\datei.php on line 297

Zeile 297:

copy($\_SESSION['ordner'], $target); 

Ich möchte nur den Ordner „Der eigentlich Ordner“ in „Ordner1“ kopieren.

Eine Abfrage ob der Ordner besteht ist hier nicht nötig da der immer neu angelegt wird.
Also sollte doch mein copy-code genügen oder?

Gruß Rolf

Hallo Rolf,

du benutzt verschiedenen slashes, einmal \ und einmal / ist das gewollt?

Vielleicht muss am ende des Zielordners noch ein \ hin?

Schade…leider nein - warne gute Idee.

Aber bringt nichts. Hab die Slashes alle umgedreht auf , wie halt korrekt im Exlorer ist. Und auch den abschliessenden Slash hab ich reigetan…

Gruß Rolf

Hallo,
die fehlermeldung sacht schon alles aus.
du kannst mit php kein Verzeichnis kopieren.

Wenn du ein Verzeichnis kopieren willst musst du den Inhalt auslesen und die Dateien dann einzeln kopieren.

falls das script nur local laufen soll dann würde ich mich mal mit dem Windows CMD Befehl xcopy beschäftigen und den dann per system() aus php heraus absetzen.

Gruß

Hi,

ne, der soll nur den letzten Ordner kopieren und nicht das ganze Verzeichnis (ca 1, 5 TB :smile:)))) Wie stell ich das dann an?
Der Ordner befindet sich nicht lokal sondern im Netzwerk.

Gruß Rolf

Hallo

Schade…leider nein - warne gute Idee.
Aber bringt nichts. Hab die Slashes alle umgedreht auf , wie
halt korrekt im Exlorer ist. Und auch den abschliessenden
Slash hab ich reigetan…

Versuche das zu vermeiden wie der Teufel das
Weihwasser. Verwende nach Möglichkeit niemals
(never ever) ‚‘ als Pfad *irgendwo*, sondern
versuche so früh wie möglich nach zu ‚/‘ zu wandeln.

Ein Pfad hat weder ein abschließendes ‚‘ noch
ein abschließendes ‚/‘. Deine copy-Funktion
kopiert Dateien - aber keine Ordner. Dazu mußt
Du Betriebssystem-Funktionen verwenden.

Grüße

CMБ

Hallo,

ok, die Backslashes hab ich raus
Ich habe nun ein copy über Shell versucht -->

 function copyShellFolder($source, $dest){

 if (!is\_dir($source))
 return false; 
 $shellBefehl = "cp -Rv $source $dest";
 exec($shellBefehl, $var); 
 return $var; 
}
 $source = $\_SESSION['ordner']; //

...aber kopiert wird nüscht :frowning:(((

Das einzige was er mir ausgibt is Array(), sprich leer....
Keine Fehlermeldung kein nix...

Gruß Rolf

Hallo,

ok, die Backslashes hab ich raus
Ich habe nun ein copy über Shell versucht -->

function copyShellFolder($source, $dest){
}

…aber kopiert wird nüscht :frowning:(((

Poste mal die Ausgabe von

 ...
 $source = $\_SESSION['ordner']; //echo " |$source| =\> |$dest| ";
 
 # $var = copyShellFolder($source, $dest);
 ...

Grüße

CMБ

Hier gibt ers mir korrekt an -->

|Z:/unterordner1/unterordner2/unterordner3/unterordner4| => |c:/test/Zielverzeichnis| Array ( )

Aber…nix drin im Zielverzeichnis…

Gruß Rolf

Aha. Das ist Win32, das wird so nicht gehen.
Versuch mal mit xcopy:

 ...
 $source = $\_SESSION['ordner'];
 $dest = $target; 
 
 ...
 # XCOPY/Win32 special handling of path delimiter
 $src = preg\_replace('#/#', '\\', $source);
 $dst = preg\_replace('#/?$|/#', '\\', $dest); # dst mit trailing '\\'
 $shellBefehl = "xcopy $src $dst /E/Q/Y/R/I";
 ...

XCOPY ist eines der Tools, die nun gerade
keine kanonisierten ‚/‘ Pfade vertragen.

Grüße

CMБ

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like

Guten Morgen,

so klappts - print_r-Ausgabe --> 2 Dateien kopiert!
Also kopieren tut er …nur …:smile: …ich hab ja den Pfad in etwa so --> Z:\unterorder1\unterorder2\unterorder3\UND_HIER_DEN_ZU_KOPIERENDEN_ORDNER(mit Files drin)

Unter „unterordner3“ befinden sich noch zig andere Unterodner. Der UND_HIER_DEN_ZU_KOPIERENDEN_ORDNER(mit Files drin) ist ein durch die weiter unten im www(Verzeichnis rekursiv nach String durchsuchen) ermittelte Ordner. Ich brauch aber nicht nur den Ordner-Inhalt sondern den gesamten Ordner.

Geht das über

$\_SESSION['ordner'] = "$dir/$fn"; (hier ein -$fn??)

Wenn ich angeben pre>$_SESSION[‚ordner‘] = „$dir“; dann kopiert er die gesamten Unterordner mit.

Gruß Rolf

Hallo

so klappts - print_r-Ausgabe --> 2 Dateien kopiert!
Also kopieren tut er …nur …:smile: …ich hab ja den Pfad
in etwa so -->
Z:\unterorder1\unterorder2\unterorder3\UND_HIER_DEN_ZU_KOPIERENDEN_ORDNER(mit
Files drin)

Unter „unterordner3“ befinden sich noch zig andere Unterodner.
Der UND_HIER_DEN_ZU_KOPIERENDEN_ORDNER(mit Files drin) ist ein
durch die weiter unten im www(Verzeichnis rekursiv nach String
durchsuchen) ermittelte Ordner. Ich brauch aber nicht nur den
Ordner-Inhalt sondern den gesamten Ordner.

Vesrsteh ich nicht. Was genau brauchst Du? Die
Dateien in einem Ordner, aber nicht dessen Unterordner?

Mal das mal auf :wink:

Grüße

CMБ

1 Like

-))))

Ich habe eine File-Suche. Diese Files werden gefunden auf einem Share in einem Ordner(UND_HIER_DEN_ZU_KOPIERENDEN_ORDNER).

JEP! Diesen Ordner möchte ich nun in ein anderes Verzeichnis kopieren.

Der Ordner (UND_HIER_DEN_ZU_KOPIERENDEN_ORDNER) behinhaltet die gesuchte Datei!

Gruß Rolf

ÄWOLA!!!
$dst = preg_replace(’|/|’, ‚\‘,"$dest/$subject");

und schon nimmt er den ganzen Ordner! :smile:

Danke euch!

Gruß Rolf