Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Windows][Script] purger les images absentes
#1
Bonjour;
Utilisant un petit programme pour supprimer rapidement les photos ratée, je me retrouve souvent avec des têtes de mort dans Darktable.
J'ai trouvé le script shell pour faire le ménage. Mais pas vu sur windows. aussi je vous en propose un ici.
Il vous faudra surement l'adapter.


'C:\Program Files\System.Data.SQLite\2015\bin\System.Data.SQLite.dll' provient de l'installation de SQLLite pour DotNet (https://system.data.sqlite.org/downloads....114.0.exe)


Il faut aussi activer l’exécution de script powershell:
  1. Démarrer Windows Powershell, en tant qu’Administrateur.
  2. Taper la commande suivante : set-executionpolicy unrestricted
  3. Puis validez avec 'O'
Voici le code du fichier (cleanTDM.ps1)
Code :
Add-Type -Path 'C:\Program Files\System.Data.SQLite\2015\bin\System.Data.SQLite.dll'
$con = New-Object -TypeName System.Data.SQLite.SQLiteConnection
$bddPath = "$($env:LOCALAPPDATA)\darktable\library.db"
Copy-Item -LiteralPath $bddPath -Destination "$($env:LOCALAPPDATA)\darktable\library.db.backForClean"
$con.ConnectionString = "Data Source=$($bddPath)"
$con.Open()
$sql = $con.CreateCommand()
$sql.CommandText = "SELECT Id,folder FROM film_rolls WHERE 1 ORDER BY id ASC;"
$adapter = New-Object -TypeName System.Data.SQLite.SQLiteDataAdapter $sql
$data = New-Object System.Data.DataSet
[void]$adapter.Fill($data)
Foreach($element in $data.tables.rows)
{
    $sql.CommandText = "SELECT id,filename FROM images WHERE film_id=$($element.Id) ORDER BY filename ASC;"
    $adapter = New-Object -TypeName System.Data.SQLite.SQLiteDataAdapter $sql
    $dataImages = New-Object System.Data.DataSet
    [void]$adapter.Fill($dataImages)
    Foreach($image in $dataImages.tables.rows)
    {
        [bool]$exists = Test-Path -LiteralPath "$($element.folder)\$($image.filename)"
        if(-Not $exists)
        {
            "$($element.folder)\$($image.filename)"
            $sql.CommandText = "DELETE FROM images WHERE id=$($image.id);"
            $sql.ExecuteNonQuery()
        }
    }
}
$sql.Dispose()
$con.Close()
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)