Avatar billede sorenriis Nybegynder
08. juni 2005 - 01:20 Der er 10 kommentarer og
1 løsning

Flytte filer

Jeg uploader i øjeblikket en masse txt-filer til roden af mit webhotel.

Der vil jeg så gerne have alle de filer hvor der indgår ordet "flytmig" i filnavnet flytter til en bestemt mappe (lad os kalde den "destination".

Hvordan laver jeg det i php?
Metoden til at køre scriptet f.eks. hvert 5. minut er jeg helt med på. Mit problem er at få flyttet filen, da jeg kun har ftp-adgang og kan afvikle php-filer på serveren.
Avatar billede coderdk Praktikant
08. juni 2005 - 03:21 #1
Hvad med noget i stil med:

$files = glob( 'folder/*flytmig*' );
$dest = 'andenfolder/';
foreach ( $files as $file )
{
  rename( $file, $dest . basename( $file ) );
}

Jeg kan ikke huske om rename kan tage wildcards... Måske man bare kan sige:
  rename( 'folder/*flytmig*', 'andenfolder/' );
Avatar billede sorenriis Nybegynder
08. juni 2005 - 09:44 #2
Tak for svaret.
Jeg glemte lige at nævne 2 ting.
1) Filnavnet skal være det samme som det oprindelige
2) Tiden hvor filen er uploaded på serveren må ikke ændres (hvilket vel sker når man bruger "rename" kommandoen?). Funktionen skal kunne noget ala det dos-kommandoen "move" kan (hvis muligt).
Avatar billede sorenriis Nybegynder
08. juni 2005 - 09:48 #3
CoderDK - ændres oprettelsesdatoen for filen ikke i dit script?
Avatar billede sorenriis Nybegynder
08. juni 2005 - 13:38 #4
Prøvede lige dit script coderdk, men jeg får denne fejlmeddelelse:

Warning: rename(): SAFE MODE Restriction in effect. The script whose uid is 11404 is not allowed to access / owned by uid 0 in move_files.php on line 8
Avatar billede sorenriis Nybegynder
08. juni 2005 - 14:42 #5
Koden ser således ud (den der kommer med ovennævnte fejl):

<?
$files = glob('*_Live_*');
foreach ( $files as $file )
{
  rename('/$file', '/live/$file');
  echo "<font face='Courier New'>Filen '$file' blev flyttet</font><br>";
}
unset($files);
?>
Avatar billede sorenriis Nybegynder
10. juni 2005 - 09:22 #6
Ingen der kan hjælpe med at finde grunden til den fejlmeddelelse?
Avatar billede coderdk Praktikant
11. juni 2005 - 19:07 #7
sorenriis, du bruger en absolut sti, der skal ikke / foran, eller også skal du angive den FULDE sti!
Avatar billede coderdk Praktikant
11. juni 2005 - 19:07 #8
Og nej, oprettelsesdatoen ændres ikke
Avatar billede sorenriis Nybegynder
13. juni 2005 - 10:17 #9
OK.. så det skal bare være?

<?
$files = glob('*_Live_*');
foreach ( $files as $file )
{
  rename('$file', 'live/$file');
  echo "<font face='Courier New'>Filen '$file' blev flyttet</font><br>";
}
unset($files);
?>
Avatar billede coderdk Praktikant
22. juni 2005 - 22:08 #10
Det ser rigtigt ud...
Avatar billede coderdk Praktikant
23. juni 2005 - 06:06 #11
Så ikke lige, du skal bruge " og ikke ':

rename($file, "live/$file");
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester