如何让2W张图片按序号排列到200个文件中?
图片名称是有序号.但不一定是连序的图片.图片的名称s00001.gif~s20000.gif(不连续有断号的)
由1个字母与5个数字组合而成
想让他们按序号排到相应的文件夹里。。例子~
s00000文件里存s00000.gif~s00099.gif   s00100文件里存s00100.gif~s00199.gif  

解决方案 »

  1.   


    $dirname = '';
    for($i=0;$i<=20000):
    if(substr($i,-1)==0){
      mkdir($i);
      $dirname = 's'.$i.'/';
    }
    $fname = 's'.$i.'gif';
    file_exists($fname ) && rename($fname,'s'.$i.$fname);
    endfor;
      

  2.   


    $dirname = '';
    for($i=0;$i<=20000):
    $j = sprinf('%05d',$i);
    if(substr($i,-1)==0){
     
      $dirname = 's'.$j.'/';
      mkdir($dirname);
    }
    $fname = 's'.$j.'gif';
    file_exists($fname ) && rename($fname,'s'.$j.$fname);
    endfor;
      

  3.   

    for($i=0;$i<=20000):   已改为;  还是错误....错误如下:Parse error: syntax error, unexpected ')', expecting ';' in C:\wamp\www\index.php on line 3
      

  4.   

    我换个写法$dir = "gif/";
    $newdir = "newgif/";
    // Open a known directory, and proceed to read its contents
    if (is_dir($dir)) {
      if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
          if(preg_match('/^(s\d{2})\d{3}.gif$/',$file,$matchs)){
           if(!is_dir($newdir.$matchs[1].'000'))
           mkdir($newdir.$matchs[1].'000',0777);
           rename($dir.$file,$newdir.$matchs[1].'000/'.$file);
          }
        }
        closedir($dh);
      }
    }
      

  5.   

    if(preg_match('/^(s\d{2})\d{3}.gif$/',$file,$matchs)){
    看错了,这儿应该是
    if(preg_match('/^(s\d{3})\d{2}.gif$/',$file,$matchs)){