Sélection de plusieurs fichiers dans un dossier

Fermé
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 - 27 mars 2021 à 22:14
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 - 31 mars 2021 à 14:15
Bonjour, actuellement j'exporte des vidéos en séquence d'images png dans un dossier. Ma vidéo de base fait 50 fps. Mais je lexporte en 100 fps. Le problème c'est que du coup ya deux fois trop d'images alors j'aimerai trouver un moyen pour selectionner une images sur deux dans un dossier rapidement pour les effacer, je ne veux pas m'attaquer à le faire manuellement car avec mes 40000 images, ça prendrai trop de temps... Si quelquun a une solution.. Merci !



Configuration: Android / Opera 62.3.3146.57763
A voir également:

11 réponses

fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172
27 mars 2021 à 22:21
Salut,

Avec quel programme tu convertis ?

Essaies Free Video to JPG

https://www.dvdvideosoft.com/products/dvd/Free-Video-to-JPG-Converter.htm

C'est gratuit :)
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172
27 mars 2021 à 22:23
Sinon un programme pour supprimer les doublons identiques, comme DoubleKiller

https://www.commentcamarche.net/telecharger/utilitaires/7701-doublekiller/
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15
27 mars 2021 à 23:22
salut, en fait j'utilise topaz ai video enhance pur upscaller mes vidéos, de bases elles sont entrelacées car c'est des vielles source, mais pour que le logiciel me fasse un bon entrelacement je dois les convertir en 100 fps avec 1 ou deux filtres sur virtualdub. le logiciel de topaz me l'encode de la sd a la hd, seulement je suis obligé de l'importer en séquence d'images pour supprimer les 50 fps en plus, car c'est des images similaires, et j'utilise vegas pro pour le montage seulement je ne peux pas importer ma video de 100 fps car même si je met mon projet sur 50 fps sur vegas, il va me lire la vidéo normalement avec la bonne fluidité mais j'ai un souci de scintillement que je ne peux pas supprimer. Le seul moyen que je le supprime c'est de supprimer toutes ces images intermédiaires. et donc je ne cherche pas un logiciel de conversion, mais vraiment une méthode pour sélectionner automatiquement une image sur deux dans un dossier. Un logiciel de doublons me serait pas utile car toutes les images on un nom diffèrent, genre "00001.png" , "00002.png" etc...
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172 > ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024
Modifié le 27 mars 2021 à 23:47
Il ne s'agit pas que les fichiers aient le même nom.

Mais qu'ils aient exactement le même poids, et exactement le même CRC32, (Fichiers identiques) si tu veux.
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172
28 mars 2021 à 00:12
Tu veux supprimer les pairs ou les impairs ?
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172
Modifié le 28 mars 2021 à 00:37
Crées un fichier qui s'appelle nimportecomment.cmd dans ton dossier d'images.

Fais clic droit dessus > Modifier

Si tu veux supprimer toutes les images impaires, copies ceci
del /s /q *1.png
del /s /q *3.png
del /s /q *5.png
del /s /q *7.png
del /s /q *9.png


Si tu veux supprimer toutes les images paires, copies ceci:
del /s /q *0.png
del /s /q *2.png
del /s /q *4.png
del /s /q *6.png
del /s /q *8.png


Fermes en enregistrant, puis exécutes le.

PS: Il faut faire attention avec ces fichiers, une chance que j'avais des backups quand j'ai maladroitement cliqué sur Ouvrir plutôt que Modifier sur mon bureau :)
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148
28 mars 2021 à 01:18
Salut,

Est-ce possible de remplacer :
del /s /q *1.png
del /s /q *3.png
del /s /q *5.png
del /s /q *7.png
del /s /q *9.png


par :
del /s /q *[13579].png
?
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172 > dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021
Modifié le 28 mars 2021 à 01:26
Salut,

Tu me poses une colle la.

Edit: Je viens de tester, ça marche pas.
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148 > fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024
Modifié le 28 mars 2021 à 01:41
Ça faisait longtemps que je n'avais pas (re)vu les regex. Et ton script m'y a fait penser. Normalement, ^[aze] doit sortir tous mots commençant par a, z ou e. Sur le wikipedia des regex, il n'y a pas d'exemple avec des nombres. Mais, regex prend en compte l'alphanumérique.

Bon, après, c'est pousser le bouchon. C'est juste que j'aime bien factoriser un script au maximum.

En fait, mon idée n'est pas si bête. Autant, des suppressions vont très vite, et Broly peut taper 5 fois la commande del. Autant pour des copies, qui peuvent prendre du temps. Créer un script qui met dans une liste, en amont, les 5 fins de fichiers, permet de s'assurer de lancer une seule commande au lieu de 5.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15
28 mars 2021 à 00:50
ohhh mais c'est une sorte de script ? Je n'y avais pas penser.. il suffit de copier le nom de tous ceux que je veux supprimer alors en fait? et je colle la liste dans cmd?
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172
28 mars 2021 à 01:09
Colles juste ce que j'ai mis

ça va supprimer tous les fichiers dont les noms finissent par 1,3,5,7,9 ou 0,2,4,6,8 (.png)
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15
Modifié le 28 mars 2021 à 03:30
ahhh super! donc l'astérisque est remplacé par n'importe quel chiffre ? :) en gros si je colle *1, 3, 5, 7, 9, tout ceux qui finissent par 0, 2, 4, 6, 8 ne s'effacent pas?
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172 > ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024
28 mars 2021 à 03:32
C'est ça, tu a compris.
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15 > fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024
28 mars 2021 à 12:00
d'accord, merci beaucoup, je teste ça dès que je peux :)
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148
Modifié le 28 mars 2021 à 04:20
Si tu n'as pas lancé les commandes. J'ai fait ce script en PowerShell :
$source = "C:\Chemin\du\dossier\des\images\a\supprimer\"

$end_file_array = @("1.txt", "3.txt", "5.txt", "7.txt", "9.txt")

foreach ($file in (get-childitem $source)) {
$filename = $file.fullname
foreach ($item in $end_file_array) {
if ($filename.endswith($item)) {
remove-item -path $filename
break
}
}
}


Le programme parcours le contenu du dossier $source (à modifier en écrivant le chemin absolu exact). On stocke le chemin absolu du fichier traité par le premier foreach. On parcourt le tableau $end_file_array et on compare avec la méthode endswith si le chemin absolu du fichier se termine par l'élément de $end_file_array. Si, oui, on supprime le fichier et on quitte le second foreach. Et ainsi de suite.
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15
28 mars 2021 à 12:01
merci pour le script :) Par contre c'est quoi la différence avec la celui de Fabul ? j'ai pas vraiment suivi le principe.
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148 > ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024
28 mars 2021 à 17:33
Avec les commandes de Fabul. Tu tapes la première ligne, tu attends que ça supprime, puis tu tapes la deuxième et ainsi de suite.

Dans mon script, tu le lances et tout ce qui doit être supprimé le sera en un seul lancement au lieu de 5 fois.

Dans ton cas, peu importe ce que tu utilises, c’est très rapide. Mais pour des copies de fichiers, mon script (à modifier) sera mieux.
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172 > dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021
Modifié le 28 mars 2021 à 17:37
Pourquoi tu taperais juste une ligne ?

Tu te compliques pour rien,

Tu copies tout ça, exécutes, et basta!
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148 > fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024
28 mars 2021 à 17:39
Je croyais qu’il fallait faire :
Del *1.png entrée
Del *2.png entrée etc.

Mais on peut écrire dans l’invite de commandes les 5 lignes et valider ensuite ?
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172 > dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021
28 mars 2021 à 17:40
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15
28 mars 2021 à 22:52
oui effectivement! le script que tu m'a donné marche à merveille! :) ça ma bien supprimé dans les 300 images d'un coup, que les impair :) par contre j'ai un peu plus difficile ou la je ne sais pas si c'est réalisable...

pour mon cas, vu que les champs de la vidéo sont alternés toutes les images mais que je dois garder une image sur deux, si je garde que les pair ou les impaires, l'image tremble un peu..
Je me suis rendu compte que en gardant une image sur deux dans cet exemple, ça fait garder: 0000, 0002, 0004, 0006, 0008, 0010 etc...

Si je veux que ca ne tremble pas, je dois garder :
0000, 0003, 0004, 0007, 0008, 0012, 0013 etc...

En gros pour la première méthode j'admet que c'est de la logique pour de l'informatique mais la, en gros je dois supprimer deux images, en garder deux, etc donc je dois garder des images paires, et impaires..
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148
28 mars 2021 à 23:08
La suite suivante n'est pas cohérente : 0000, 0003, 0004, 0007, 0008, 0012, 0013

On supprime : 2 images, puis 2 puis 3 (1 et 2 ; 5 et 6 ; mais 9, 10 et 11)

Si tu veux supprimer 2 images consécutives puis garder 2 images suivantes consécutives et ainsi de suite, il faut faire un calcul numérique et non pas passer par des expressions régulières comme Fabul et moi avions fait.

Je pense que Fabul maîtrise mieux batch (cmd) que je ne maîtrise PowerShell, il va te sortir l'algo avant moi. Mais, j'essaye quand même.
0
fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024 5 172 > dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021
Modifié le 28 mars 2021 à 23:19
Ça marche mal parce que dans 10, il y a 2 fois 5 , un nombre impair

Si on fait un script simple comme ça, soit il va y en avoir une de trop, soit il va en manquer une à toutes les 10

del /s /q *0.png
del /s /q *1.png
del /s /q *4.png
del /s /q *5.png
del /s /q *8.png
del /s /q *9.png

Le 9 est trop près du 0 qui est collé sur le 1

Si tu n'enlève pas la 9, ça sera pas stable non plus j'en ai bien l'impression.
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148 > fabul Messages postés 37700 Date d'inscription dimanche 18 janvier 2009 Statut Modérateur Dernière intervention 24 avril 2024
Modifié le 28 mars 2021 à 23:24
Si la suite est cohérente, c'est-à-dire qu'on supprime exactement n quantité d'images consécutivement, on peut faire une boucle for comme en python avec for i in range(départ, fin, pas) avec départ à la première image à conserver, fin à dernière image + 1 et le pas qui vaut n. C'est possible en python, ça doit l'être en batch et en PowerShell. J'ai une préférence pour le second qui finira par remplacer définitivement batch.

Petite aparte pour mon script PowerShell, j'avais une erreur de permission refusée. J'utilise Linux, et j'avais enregistré le script en .ps au lieu de .ps1. Ça tentait d'ouvrir un logiciel de pdf je crois. Donc, les scripts PowrShell doivent s'enregistrer avec l'extension .ps. En changeant l'extension, je n'avais plus l'erreur et le script s'est lancé sans encombre.
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15
29 mars 2021 à 00:11
oui, c'est pas incohérent, pour avoir essayer, en gros ça garde deux images, et en supprime deux, etc...
En gros si je garde l'idée de ce script, la par contre je dois réécrire manuellement toutes les images à supprimer ... lol
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148
Modifié le 29 mars 2021 à 00:31
Lis bien le script, je l'ai commenté. Il faudra l'adapter.

$number_of_images_to_keep = 2 # On veut garder 2 images consécutives
$number_of_images_to_remove = 3 # on veut supprimer 3 images consécutives
$chunk = $number_of_images_to_keep + $number_of_images_to_remove # taille d'un bloc complet (2+3)

$filename_array = @() # on crée une liste vide qui contiendra le nom complet des images

$extension = ".png" # SI le dossier source ci-dessous contient des extensions autre que .png
$source = "C:\La\Source\Des\Images\De\Ton\Montage\"

foreach ($file in (get-childitem $source)) {
    $filename = $file.fullname
    if ($filename.endswith($extension) {
        # on va ajouter uniquement les images .png dans $filename_array :
        $filename_array += $filename
    }
}

# on trie par ordre croissant pour s'assurer que les images sont correctement stockées dans l'array filename_array:
$filename_array = $filename_array | sort

# cas où l'on veut conserver les 2 premières images, supprimer les 3 suivantes et rebelote jusqu'à la fin de la liste
$end_array = $filename_array.length
for ($i = 0 ; $i -lt $end_array ; $i += 1) { # on va parcourir chaque élément de filename_array
    if (($i % $chunk -eq 2) -or ($i % $chunk -eq 3) -or ($i % $chunk -eq 4)) {
        remove-item -path $filename_array[$i]
    }
}


N'hésite pas si tu as des questions. Par contre, je ne me couche pas tard aujourd'hui ;)

Il n'y a pas la coloration syntaxique de PowerShell ici. Mais, tu as les numéros de ligne. Tu m'indiqueras celles qui t'interrogent. Je t'expliquerai.
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15
29 mars 2021 à 00:37
merci de ta réponse :) mais dans le script que tu m'a mis, ca garde deux images, en supprime trois, en garde deux, en re supprime trois etc... dans mon cas je dois bien garder deux images, supprimer deux, garder deux, supprimer deux etc..
par exemple pour la premiere ligne, "2 # On veut garder 2 images consécutives" je peux laisser juste "2" ? Merci en tout cas pour ton aide!
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148 > ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024
29 mars 2021 à 00:45
Oui, j'ai fait un maximum de variables pour que les modifications soient simplifiées.
Si tu es dans le cas :
Je veux garder les 2 premières images, puis supprimer les 2 suivantes, et répéter ce processus jusqu'à la fin.
Alors tu peux remplacer :
$number_of_images_to_remove = 3
par
$number_of_images_to_remove = 2
Et $chunk vaudra 4 (2+2). Ensuite, pou le modulo (%) qui calcule le reste d'une division euclidienne. Les valeurs modulo 4 valent : 0, 1, 2 et 3. Exemple 13 % 4 = 1. Tu veux conserver les modulo 4 valant 0 et 1, donc supprimer ceux valant 2 et 3.
Tu remplaceras donc
if (($i % $chunk -eq 2) -or ($i % $chunk -eq 3) -or ($i % $chunk -eq 4)) {
par
if (($i % $chunk -eq 2) -or ($i % $chunk -eq 3)) {
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148 > dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021
29 mars 2021 à 00:49
Je te conseille vivement et afin d'éviter une erreur que j'aurais pu faire de créer quelques fichiers en .png et faire un test.

Je n'ai pas testé, mais, j'ai fait le script avec assiduité. Donc, il n'y a pas d'erreur de calcul, mais dans le doute, mieux vaut tester. Parce que je crois que remove-item ça supprime cash, ça passe pas par la case corbeille.
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15 > dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021
Modifié le 29 mars 2021 à 00:55
d'accord, jai essayé la commande, c'est bien avec windows powershell ? ça m'indique une erreur à la ligne 12, en modification, j'ai juste mis l'emplacement de mon dossier
ps, oui j'ai tsté a en ayant copier un dossier de sequence d'image ;)
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15 > dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021
29 mars 2021 à 01:00
ca maffiche ca :

windows PowerShell
Copyright (C) Microsoft Corporation. Tous droits réservés.

Testez le nouveau système multiplateforme PowerShell https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.1

PS C:\Users\the-l> $number_of_images_to_keep = 2 # On veut garder 2 images consécutives
PS C:\Users\the-l> $number_of_images_to_remove = 2 # on veut supprimer 2 images consécutives
PS C:\Users\the-l> $chunk = $number_of_images_to_keep + $number_of_images_to_remove # taille d'un bloc complet (2+2)
PS C:\Users\the-l>
PS C:\Users\the-l> $filename_array = @() # on crée une liste vide qui contiendra le nom complet des images
PS C:\Users\the-l>
PS C:\Users\the-l> $extension = ".png" # SI le dossier source ci-dessous contient des extensions autre que .png
PS C:\Users\the-l> $source = "C:\Users\the-l\Desktop\cestbon"
PS C:\Users\the-l>
PS C:\Users\the-l> foreach ($file in (get-childitem $source)) {
>> $filename = $file.fullname
>> if ($filename.endswith($extension) {
>> # on va ajouter uniquement les images .png dans $filename_array :
>> $filename_array += $filename
>> }
>> }
Au caractère Ligne:3 : 40
+ if ($filename.endswith($extension) {
+ ~
Jeton inattendu « { » dans l’expression ou l’instruction.
Au caractère Ligne:3 : 40
+ if ($filename.endswith($extension) {
+ ~
Parenthèse fermante « ) » manquante après l’expression dans l’instruction « if ».
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken

PS C:\Users\the-l>
PS C:\Users\the-l> # on trie par ordre croissant pour s'assurer que les images sont correctement stockées dans l'array filename_array:
PS C:\Users\the-l> $filename_array = $filename_array | sort
PS C:\Users\the-l>
PS C:\Users\the-l> # cas où l'on veut conserver les 2 premières images, supprimer les 3 suivantes et rebelote jusqu'à la fin de la liste
PS C:\Users\the-l> $end_array = $filename_array.length
PS C:\Users\the-l> for ($i = 0 ; $i -lt $end_array ; $i += 1) { # on va parcourir chaque élément de filename_array
>> if (($i % $chunk -eq 2) -or ($i % $chunk -eq 3) -or ($i % $chunk -eq 4)) {
>> remove-item -path $filename_array[$i]
>> }
>> }
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148
29 mars 2021 à 07:18
Que fait mon script ?
Tout d'abord, on y conçoit le morceau de suite logique d'éléments (images ici) à conserver et supprimer. On additionne l'ensemble pour faire le morceau.

$filename_array est une variable vide de type array. On va la remplir.

On parcours chaque élément du répertoire de tes images avec le get-childitem, chaque élément est un objet fichier temporairement stocké dans $file.
Je sais que pour supprimer un fichier avec remove-item il faut le chemin du fichier et de préférence le chemin absolu. C'est-à-dire, de la racine du disque de stockage jusqu'au cheminement final du fichier. On obtient cela avec la méthode .fullname.
Pour chaque fichier, on vérifie s'il termine par .png (variable $extension). Si c'est le cas, alors c'est une image png, on envoie son chemin absolu qui est de type string (chaîne de caractères) dans l'array $filename_array.
Quand le get-childitem a parcouru tous les fichiers. On trie $filename_array parce qu'on ne sait jamais comment get-childitem a parcouru les fichiers.

On a une liste (array) de strings qui sont les chemins absolus des images.

Avec for on va parcourir cette liste. un array a n éléments, le premier élément est à l'indice 0, le dernier à l'indice n-1.
exemple :
$prenoms = @("toto", "tata", "titi")
$prenoms[1] renverra tata

les 3 conditions du for sont (départ, arrivée, le pas d'incrémentation)
si on veut tout : ($i=0, $i=indice du dernier élément, $i += 1)

Selon tes conditions de départ, tu veux conserver l'image 0.png. Tu pars de $i=1.
Tu veux garder les 2 premières images de ton départ et supprimer les 2 suivantes, et ainsi de suite.
On a stocké $chunk qui vaut 4 qui sera le diviseur. Chaque indice $i sera le dividende. On récupère le reste.
On sait que 1 modulo 4 vaut 1, 2 modulo 4 vaut 2, 3 modulo 4 vaut 3, 4 modulo 4 vaut 0. Tu veux que lorsque $i modulo 4 vaut 1 ou 2, on supprime l'image, ce sont les conditions du if

9 modulo 4 vaut 1, 10 modulo 4 vaut 2.

Ton for doit s'écrire :
$dernier_element = $filename_array.length
for ($i = 1 ; $i = $dernier_element ; $i += 1) {
if (($i % $chunk -eq 1) -or ($i % $chunk -eq 2)) {
remove-item -path $filename_array[$i]
}
}
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15
29 mars 2021 à 12:36
je t'avoue que tu me parle chinois, je connais pas les termes if, Si+=1, sfile, get-childtem etc ... je sais pas trop ce que ça signifie, au final mon script est comme ça mais il se lance plus.. lol :


Testez le nouveau système multiplateforme PowerShell https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.1

PS C:\Users\the-l> $number_of_images_to_keep = 2
PS C:\Users\the-l> $number_of_images_to_remove = 2
PS C:\Users\the-l> $chunk = $number_of_images_to_keep + $number_of_images_to_remove # taille d'un bloc complet (2+2)
PS C:\Users\the-l>
PS C:\Users\the-l> $filename_array = @()
PS C:\Users\the-l> $extension = ".png"
PS C:\Users\the-l> $source = "C:\Users\the-l\Desktop\cestbon"
PS C:\Users\the-l>
PS C:\Users\the-l> foreach ($file in (get-childitem $source)) {
>> $filename = $file.fullname
>> if ($filename.endswith($extension)) {
>> # on va ajouter uniquement les images .png dans $filename_array :
>> $filename_array += $filename
>> }
>> }
PS C:\Users\the-l>
PS C:\Users\the-l>
PS C:\Users\the-l> $filename_array = $filename_array | sort
PS C:\Users\the-l>
PS C:\Users\the-l>
PS C:\Users\the-l> $dernier_element = $filename_array.length
PS C:\Users\the-l> for ($i = 1 ; $i = $dernier_element ; $i += 1) {
>> if (($i % $chunk -eq 1) -or ($i % $chunk -eq 2)) {
>> remove-item -path $filename_array[$i]
>> }
>> }
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15
29 mars 2021 à 13:50
Ne te casse plus la tête.. Je vais abandonner l'idée du script en vrai, j'ai trouvé une solution un poil plus long mais plus simple.. il suffit de réduire le dossier ou y'a les images à 4 colonnes et sélectionner les deux colonnes du milieu puis descendre jusqu'en bas et effacer.. En faisant ça, ça garde bien une image sur deux à partir du 0 haha. Merci pour ton aide en tout cas, le script pourrai me resservir plus tard :)
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148 > ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024
30 mars 2021 à 16:20
Salut,

Pas de soucis. Tant mieux si ton logiciel propose cette option.

L'avantage d'un script est qu'il est indépendant du logiciel. Normalement, je fais mes scripts en langage Python 3. Mais, ce langage n'est pas installé nativement sur Windows 10. PowerShell est un langage de Microsoft. Windows 10 l'a de base.

J'ai dû apprendre comment manipuler PowerShell.

Peut-être un exemple concret de l'utilité d'un script. Chez toi, sur ton PC fixe puissant, tu fais tes montages vidéos, tu exportes la totalité des images pour que l'animation soit lisible depuis un logiciel moins puissant, donc moins lourd, mais suffisant. Tu mets ton dossier sur une clé USB : déplacement léger, tu n'apportes pas ton laptop d'1 kg. Tu testes sur l'ordi de ton client qui n'est pas aussi performant que le tiens. Tu décides de diviser par 2 la quantité d'images. Tu lances le script que tu as mis dans ta clé USB. Pas besoin de te trimballer avec le logiciel de montage ou pire, de contraindre ton client à le posséder.

Vient le problème de la vitesse de lecture. Si tu as 60000 images à animer à 60 FPS, ça te fait 1000 secondes d'animation, si tu réduis à 30000 images, pour avoir la même durée, tu dois passer à 30 FPS. Les langages de programmation (PowerShell, Python 3, ...) ont forcément un module, parfois à installer, qui permet de faire cette modification en quelques lignes qui pèseront quelques Ko contrairement à un logiciel de montage qui peut grimper à plusieurs Mo.
0
ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024 15 > dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021
30 mars 2021 à 20:08
oui je comprend, d'ailleurs je me suis vite rendu compte qu'en exportant ne serai ce que 3000 images dans vegas pro, ça le fait planter parfois, ça rame assez du coup, mais pour les colonnes, c'est pas le logiciel que j'utilise c'est tout simplement le dossier dans l'explorateur de windows, en redimensionnant pour afficher juste deux colonnes pour les images paires ou 4 colonnes pour sélectionner deux images sur deux, ca marche..le seul problème, c'est que c'est quand même assez long à sélectionner.. la mon film après calcul fait 480 000 images... lol donc la oui le script me parait être une bonne solution, alors je réessaierai de le faire plus tard quand j'aurai toutes mes images
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148 > ssbroly Messages postés 1004 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 11 février 2024
30 mars 2021 à 20:34
C’est Vegas Pro. Vu l’usine à gaz qu’est ce logiciel, il devrait même faire le café.

C’est clair qu’un script bien préparé aux petits oignons. Tu ne modifies que les variables (la source, le nombre d'images consécutives à conserver, le nombre d’images consécutives à effacer), ça prend 5 secondes que tu aies 10 images ou 10 milliards. Tu lances le script et roule ma poule.
0