Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258

    Cancellare quello che non è presente nel database

    Ho un database access con un campo di testo chiamato "PercorsoFoto" dove vi sono i percorsi di vari file.

    Ho visto che la cartella ha raggiunto dimensioni notevoli e volevo cancellare i file che non sono collegati al database;

    come potrei fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    vuoi cancellare files ma nel database hai il percorso .... forse manca qualcosa ?
    o forse vuoi cancellare tutti i files nei percorsi non presenti nel database ?
    o forse esistono altre possibilità ?
    dilemma ....

  3. #3
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Si, vorrei lasciare intatti i file presenti nel database e cancellare tutto il resto.

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    con fso fai un ciclo per leggere il contenuto delle cartella. poi, ogni dati estratto, lo confronti con la lista del db: se il valore non è presente nel db cancelli il file

    di quanti dati parliamo?

  5. #5
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    con fso fai un ciclo per leggere il contenuto delle cartella. poi, ogni dati estratto, lo confronti con la lista del db: se il valore non è presente nel db cancelli il file

    di quanti dati parliamo?
    Sono un centinaio di files, me lo chiedi perché si potrebbe arrivare al timeout dello script?

    Avevo abbozzato questo codice che però fa il contrario, cancella quello che c'è nel database:

    codice:
    sql = "select * from cataloghi"
    set rec = conn.execute(sql)
    if not rec.eof then
    do while not rec.eof
    productID = rec("productID")
    PercorsoImg1 = rec("Foto1")
    
    
    Dim fs
    Set fs = Server.CreateObject("Scripting.FileSystemObject")
    
    
    rec.MoveNext
    
    
    
    
    IF fs.FileExists (Server.MapPath(PercorsoImg1)) Then
    
    
    fs.DeleteFile server.MapPath(PercorsoImg1),True
    
    
    ELSE
    
    
    response.write("NON ESISTE")
    response.write("</br>")
    END IF
    
    
    
    
    
    
    
    
    
    
    Loop
    end if
    
    
    Set fs = nothing
    mi suggeriresti il codice per confrontare i files letti nella cartella a quelli nel database?

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    magari con qualche migliaio potrebbero cominciare problemi, un centinaio è roba da ridere

    hai lavorato al contrario della tua necessità

    esplora la cartella, e durante l'esplorazione fai la verifica:
    se non è presente nel db cancelli, altrimenti fai nulla

  7. #7
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    C'è qualcosa che non va, non cancella nessun file

    codice:
    <%
    Dim objFso, objFolder, objFiles, strFolder, strFile 
    strPath = "/foto-prodotti" 
    
    
    Set objFso = Server.CreateObject("Scripting.FileSystemObject") 
    Set objFolder = objFso.GetFolder(Server.MapPath(strPath)) 
    Set objFiles = objFolder.Files 
    
    
    For Each strFile in objFiles
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    '------------------------------------------------- INIZIO ciclo interno
    sql = "select * from cataloghi"
    set rec = conn.execute(sql)
    if not rec.eof then
    do while not rec.eof
    productID = rec("productID")
    PercorsoImg1 = rec("Foto1")
    
    
    Dim fs
    Set fs = Server.CreateObject("Scripting.FileSystemObject")
    
    
    rec.MoveNext
    
    
    
    
    
    
    
    
    RESPONSE.write "<br>----"
    RESPONSE.write PercorsoImg1
    RESPONSE.write "<br>----"
    RESPONSE.write strPath & "/" & strFile.name
    RESPONSE.write "<br>"
    RESPONSE.write "<br>"
    
    
    
    
    IF fs.FileExists (Server.MapPath(PercorsoImg1)) Then
    
    
    
    
    
    
    IF strPath & "/" & strFile.name=Server.MapPath(PercorsoImg1) THEN fs.DeleteFile server.MapPath(PercorsoImg1),True
    
    
    ELSE
    
    
    response.write("NON ESISTE")
    response.write("</br>")
    END IF
    
    
    
    
    
    
    
    
    
    
    Loop
    end if
    
    
    Set fs = nothing 
    
    
    rec.Close 
    set rec = nothing
    
    
    '------------------------------------------------- FINE ciclo interno
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    Next 
    
    
    
    
    conn.Close 
    Set conn = nothing 
    
    
    
    
    
    
    Set objFso = Nothing 
    Set objFolder = Nothing 
    Set objFiles = Nothing 
    %>

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    codice:
    strPath = "/foto-prodotti" 
    
    Set objFso = Server.CreateObject("Scripting.FileSystemObject") 
    Set objFolder = objFso.GetFolder(Server.MapPath(strPath)) 
    Set objFiles = objFolder.Files
    
    For Each file in objFiles
    
        sql = "select * from cataloghi where nomeFoto='"&file.name&"' "
        set rec = conn.execute(sql)
            if rec.eof then
                'response.write server.MapPath(strPath)&"\"&file.name &"<br>"
                objFso.DeleteFile(server.MapPath(strPath)&"\"&file.name)
            end if
        rec.Close 
        set rec = nothing
    
    Next 
    
    Set objFso = Nothing 
    Set objFolder = Nothing 
    Set objFiles = Nothing

  9. #9
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Grazie per lo script, mi cancella però tutti i files della cartella, anche quelli non presenti nel database (tranne le sotto cartelle).

  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    io non credo...

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.