Avatar billede jammerlab Nybegynder
01. januar 2005 - 16:51 Der er 18 kommentarer og
1 løsning

Rename af filer

Jeg har en helveds masse filer... billede filer men der er noget kuks i det for punktumet er skiftet ud med %2E så nu vil jeg hører om man ikke kan bruge noget i PHP til at rename alle filerne...
Avatar billede coderdk Praktikant
01. januar 2005 - 16:59 #1
$mappe = "mappenavn";
if ( $d = opendir( $mappe ) )
{
  $fn = array();
  while ( $f = readdir( $d ) )
  {
      if ( is_file( $f ) && strpos( "%2E", $f ) > 0 )
      {
          $fn[$f] = str_replace( "%2E", ".", $f );
      }
  }
  closedir( $d );
  foreach ( $fn as $old => $new )
  {
      rename( "$mappe/$old", "$mappe/$new" );
  }
}
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:01 #2
Kunne godt ligne noget af det jeg skal bruge :) Prøver det lige
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:04 #3
Den fortager sig ikke rigtig noget...
Avatar billede coderdk Praktikant
01. januar 2005 - 17:13 #4
Hov:

  if ( is_file( $f ) && strpos( "%2E", $f ) > 0 )

Skal da vist være:

  if ( is_file( $f ) && strpos( $f, "%2E" ) > 0 )

:P Virker det?
Avatar billede detox Nybegynder
01. januar 2005 - 17:14 #5
Tror nærmere:

if ( is_file( "$mappe/$f" ) && strpos( $f, "%2E" ) > 0 )
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:16 #6
Ingen af de 2 ting fungere :P desværre.
Avatar billede coderdk Praktikant
01. januar 2005 - 17:18 #7
Har du ændret $mappe til den mappe du vil rename i?
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:19 #8
Ja :) Den giver ingen fejl altså den kan godt åbne mappen
Avatar billede coderdk Praktikant
01. januar 2005 - 17:21 #9
Du kan prøve at skrive noget debug info ud:

<?php

    $mappe = ".";
    if ( $d = opendir( $mappe ) )
    {
        $fn = array();
        while ( $f = readdir( $d ) )
        {
            if ( is_file( $f ) && strpos( $f, "%2E" ) > 0 )
            {
                $fn[$f] = str_replace( "%2E", ".", $f );
                echo "Fundet $f<br>";
            }
        }
        closedir( $d );
        foreach ( $fn as $old => $new )
        {
            echo "Rename $old to $new<br>";
            rename( "$mappe/$old", "$mappe/$new" );
        }
    }
    else
    {
      echo "Kunne ikke åbne $mappe";
    }

?>

Du kan også prøve at rename inde i loopet:

<?php

    $mappe = ".";
    if ( $d = opendir( $mappe ) )
    {
        while ( $f = readdir( $d ) )
        {
            if ( is_file( $f ) && strpos( $f, "%2E" ) > 0 )
            {
                $fn = str_replace( "%2E", ".", $f );
                echo "Rename $f to $fn<br>";
                rename( "$mappe/$f", "$mappe/$fn" );
            }
        }
        closedir( $d );
    }

?>
Avatar billede coderdk Praktikant
01. januar 2005 - 17:23 #10
heheh ja detox, det ville nok også hjælpe ;)

Altså rette

  if ( is_file( $f ) && strpos( $f, "%2E" ) > 0 )

til

  if ( is_file( "$mappe/$f" ) && strpos( $f, "%2E" ) > 0 )
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:24 #11
Index.php
----------
<?
$mappe = "pics";
if ( $d = opendir( $mappe ) )
{
  $fn = array();
  while ( $f = readdir( $d ) )
  {
      if ( is_file( $f ) && strpos( "%2E", $f ) > 0 )
      {
          if ( is_file( "$mappe/$f" ) && strpos( $f, "%2E" ) > 0 );
      }
  }
  closedir( $d );
  foreach ( $fn as $old => $new )
  {
      rename( "$mappe/$old", "$mappe/$new" );
  }
}
?>

og en mappe der hedder "pics"... og den gør intet :P
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:26 #12
<?php

    $mappe = "pics";
    if ( $d = opendir( $mappe ) )
    {
        while ( $f = readdir( $d ) )
        {
            if ( is_file( $f ) && strpos( $f, "%2E" ) > 0 )
            {
                $fn = str_replace( "%2E", ".", $f );
                echo "Rename $f to $fn<br>";
                rename( "$mappe/$f", "$mappe/$fn" );
            }
        }
        closedir( $d );
    }

?>

den når ikke ned og echo'er...
Avatar billede detox Nybegynder
01. januar 2005 - 17:42 #13
<?
$mappe = "pics";
if ( $d = opendir( $mappe ) )
{
  $fn = array();
  while ( $f = readdir( $d ) )
  {
      if ( is_file( "$mappe/$f" ) && strpos( $f, "%2E" ) > 0 )
      {
          $fn[$f] = str_replace( "%2E", ".", $f );
      }
  }
  closedir( $d );
  foreach ( $fn as $old => $new )
  {
      echo "$old => $new<br />";
      rename( "$mappe/$old", "$mappe/$new" );
  }
}
?>
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:45 #14
Så skete der noget :) Det fungere fint detox hehe
Avatar billede coderdk Praktikant
01. januar 2005 - 17:45 #15
jammerlab, du havde glemt at ændre:

if ( is_file( $f ) && strpos( $f, "%2E" ) > 0 )

til

if ( is_file( "$mappe/$f" ) && strpos( $f, "%2E" ) > 0 )
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:47 #16
ah okay :P
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:48 #17
når men detox smid et svar så deler i :)
Avatar billede detox Nybegynder
01. januar 2005 - 17:50 #18
Arh, det var bare en mindre rettelse. Giv du dem til coderdk.
Avatar billede jammerlab Nybegynder
01. januar 2005 - 17:57 #19
Hehe I will... tak for hjælpen og godt nytår
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