Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Eliminare file contenuti in più cartelle

    Buon giorno, ho la necessità di eliminare in un solo colpo tutti i file contenuti in 30 cartelle.
    Eliminare soltanto i file e non le cartelle che li contengono.
    Al momento ho questo script che funziona soltanto per eliminare file di una sola cartella, è possibile utilizzarlo per fare una pulizia completa?
    Codice PHP:
    $txtBand             trim($_POST['txtBand']);

    $targetPath "../../DOC/Band/";


        if(
    $id_hidden==1){
            
    $targetPath .= "Copia di Band/".$txtBand."/";
        }
        else{
            
    $targetPath .= "Copia di Band/";
        }
        
        
        if(
    file_exists($targetPath) && is_file($targetPath)) {
                
    unlink($targetPath);
            }elseif(
    is_dir($targetPath)){
                
    $handle opendir($targetPath);
                while (
    false !== ($file readdir($handle))) { 
                    if(
    is_file($targetPath.$file)){
                        
    unlink($targetPath.$file);
                    }
                }
                
    $handle closedir($handle);
                
    //rmdir($targetPath);
        

    Qui, se scelgo la cartella di una sola band, il contenuto viene eliminato, se invece non viene scelto niente và sul ramo else, ma purtroppo non mi elimina nulla...come mai?
    Grazie mille...

  2. #2
    ma cancellare le cartelle e poi ricrearle?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    dici? solitamente si fa cosi?

  4. #4
    Originariamente inviato da ANTAGONIA
    dici? solitamente si fa cosi?

    boh solitamente io cancello la cartella e basta... se però a te serve di lasciarla la cartella, puoi cancellarla e poi ricrearla...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    ho ritrovato questo script che in modo ricorsivo rimuove sia i file che tutte le cartelle contenute nella directory principale Copia di Band.
    Ora,l'unico problema che ho è che, si che elimina sia i file che le cartelle, ma elimina anche la cartella principale "Copia di Band", sapreste dirmi per favore come mai?
    Codice PHP:
    function rmdir_recurse($path) { 
        
    //$path = rtrim($path, '/').'/'; 
        
    $path rtrim($path).'/'
        
    $handle opendir($path); 
        while(
    false !== ($file readdir($handle))) { 
            
    //if($file != '.' and $file != '..' ) { 
            
    if (!preg_match("#^\.\.?$#"$file)) {
                
    $fullpath $path.$file//originale
                
    if(is_dir($fullpath)){
                    
    rmdir_recurse($fullpath);
                    
    //echo "<script>alert('Folder and file: success');< /script>";
                
    }
                else{
                    
    unlink($fullpath);
                    
    //echo "<script>alert('only this File: success');< /script>";
                
    }
            } 
        } 
        if(
    is_file($path)){
            
    unlink($path);
            
    //echo "<script>alert('only this File: success');< /script>";
        
    }
        
    closedir($handle);
        
    //qui rimuove la sottocartella
        
    rmdir($path);
    }
    $txtBand             trim($_POST['txtBand']);

    $targetPath "../../DOC/Band/";


        if(
    $id_hidden==1){
            
    $targetPath .= "Copia di Band/".$txtBand."/";
        }
        else{
            
    $targetPath .= "Copia di Band/";
        } 
    rmdir_recurse($targetPath); 
    Per non cancellare la cartella principale "Copia di Band"?
    grazie ancora

  6. #6
    perchè in rmdir_recurse se veci come ultima istruzione fa rmdir($path); , quindi se gli passi come path "Copia di Band/" quello ti cancella anche Copia di Band
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    oddio, mi sono perso...e quindi?
    nel senso, se devo cancellare singola cartella e file compresi strutturo la path in questo modo:
    Codice PHP:
    $targetPath "../../DOC/BandProva/";

        if(
    $id_hidden==1){
            
    $targetPath .= "Copia di Band/".$txtBand."/";
        } 
    avendo cosi "../../DOC/BandProva/Copia di Band/".$txtBand."/"
    In questo caso vado ad interagire solo con la cartella della band scelta.

    se invece voglio interagire con la cartella principale "Copia di Band/" dovrò strutturare la path cosi:
    Codice PHP:
    else{
        
    $targetPath .= "Copia di Band/";

    avendo in questo caso "../../DOC/BandProva/Copia di Band/"

    Dato che non funziona, dove sbaglio?
    Grazie ancora

  8. #8
    scusate ragazzi...potete farmi capire per favore?

  9. #9
    apparentemente, dopo aver testato, sembra funzionare e quindi risolto cosi:
    Codice PHP:
    function rmdir_recurse($path) { 
    $path rtrim($path); 
        
    $handle opendir($path); 
        while(
    false !== ($file readdir($handle))) { 
    if (!
    preg_match("#^\.\.?$#"$file)) {
                
    $fullpath $path."/".$file//originale
                
    if(is_dir($fullpath)){
                    
    rmdir_recurse($fullpath);
    }
                else{
                    
    unlink($fullpath);
    }
                
    //qui rimuove,a seconda se entra in un ramo o nell'altro del controllo, o solo i file contenuti nella cartella di una band, oppure tutte le cartelle delle Band compresi i file, della cartella principale Copia di Band;
                
    rmdir($fullpath);
            } 
        } 
     
    closedir($handle);
    }

    $targetPath "../../DOC/BandProva/";


        if(
    $id_hidden==1){
            
    $targetPath .= "Copia di Band/".$txtBand;
        }
        else{
            
    $targetPath .= "Copia di Band";
        }
        
    rmdir_recurse($targetPath); 
    grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.