Script pour cfg overlay

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
cedric125yzf
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 10 janv. 2021 06:39
Status : Hors ligne

Script pour cfg overlay

#1

Message par cedric125yzf »

Bonjour a tous je cherche a créer un script pour automatiser la création de fichier cfg pour le chargement d'overlay sous retroarch a partir des fichier png du dossier

voila le script :
$hFile = FileFindFirstFile('*.*')


$File =  $hFile&".cfg"

$Text = "overlays = 1" & @CRLF & _
        "overlay0_overlay =$hFile"& @CRLF & _
   "overlay0_full_screen = true" & @CRLF & _
        "overlay0_descs = 0"


FileWrite($File, $Text)
ca fait presque ce que je voudrais mais ca me créer un seul fichier 1.cfg au lieu de traiter tout les fichiers
avec dedans:
overlays = 1
overlay0_overlay =$hFile
overlay0_full_screen = true
overlay0_descs = 0

au final ca devrait me créer un fichier Akira (Europe).cfg avec dedans :
overlays = 1
overlay0_overlay = "Akira (Europe).png"
overlay0_full_screen = true
overlay0_descs = 0

honnêtement je sèche complètement, si vous avait une idée du problème
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 902
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Script pour cfg overlay

#2

Message par walkson »

Bonjour,
A première vue, vous utilisez mal la fonction FileFindFirstFile() qui est en deux temps
    ; Assigne une variable locale avec le handle de recherche de tous les fichiers dans le répertoire courant.
    Local $hSearch = FileFindFirstFile("*.*")
$sFileName = FileFindNextFile($hSearch) ; fichier suivant
Je préfère cette fonction Local $aFileList = _FileListToArray(@DesktopDir, "*") qui donne un array qu'il suffit de boucler
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1921
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Script pour cfg overlay

#3

Message par TommyDDR »

Vous écrivez "overlay0_overlay =$hFile" tout ce qui est entre "" est considéré comme chaine de caractère, si vous voulez afficher la valeur de $hFile, il faudra utilisez l'opérateur de concaténation d'AutoIt :
"overlay0_overlay =" & $hFile
De plus, $hFile n'affichera pas le nom du fichier mais le handle de recherche (voir post de walkson)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
cedric125yzf
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 10 janv. 2021 06:39
Status : Hors ligne

Re: Script pour cfg overlay

#4

Message par cedric125yzf »

Bonjour au final je pense que ca va être très difficile d'automatiser ma création de fichier cfg, car si j'ai bien compris _FileListToArray fait un tableau contenant les nom des fichiers, exist'il une variable qui contiendrait que le nom de fichier ?
il me resterai qu'a ajouter une boucle pour pouvoir faire tout les fichiers d'un dossier je pense.
du genre si le fichier png a déjà un fichier cfg passer au suivant.
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 38
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: Script pour cfg overlay

#5

Message par Nine »

Très difficile ? Certainement pas. Un jeu d'enfant à mon avis. Que le nom du fichier soit dans un tableau ou dans une variable ne change absolument rien à l'objectif de créer un fichier .cfg de quelques lignes. Il s'agit de lire le tableau (array) un fichier à la fois, et de produire le fichier .cfg correspondant. À première vue, rien de difficile...
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 902
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Script pour cfg overlay

#6

Message par walkson »

exist'il une variable qui contiendrait que le nom de fichier ?
Vous n'avez visiblement pas testé la fonction !
#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
   ; List all the files and folders in the desktop directory using the default parameters.
   Local $aFileList = _FileListToArray(@DesktopDir, "*.txt")
   _ArrayDisplay($aFileList, "$aFileList")
   Local $aFileList = _FileListToArray(@DesktopDir, "*.txt", $FLTA_FILES, True)
   _ArrayDisplay($aFileList, "$aFileList")
EndFunc   ;==>Example
Sinon, pour extraire le nom d'un fichier d'un chemin facilement
#include <Array.au3>

$path = "D:\MesDocuments\AUTOIT\file.png"
Local $split = StringSplit($path, "\")
_ArrayDisplay($split)
$NomFile = $split[UBound($split) - 1]
MsgBox(0,"",$NomFile)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
cedric125yzf
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 10 janv. 2021 06:39
Status : Hors ligne

Re: Script pour cfg overlay

#7

Message par cedric125yzf »

Bonjour Walkson,
J'ai bien tester la fonction qui me donne bien le tableau de tout les fichiers que je veux,
Je le suis mal exprimé en faite je cherche la variable ou la fonction qui fait appel au lignes du tableau.

On va dire n correspond à la première ligne, donc dans mon script
Si n=1 alors le nom correspondant est "name" donc faire la création du cfg avec ce nom, puis ajouter 1 à n et retourner au début de la boucle jusqu'à la fin
Je suis pas très douer en programmation par script je me débrouille un peu en "copiant" les lignes et en les adaptant à ce que je veux.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 902
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Script pour cfg overlay

#8

Message par walkson »

Bonjour,
Je vous mets les 2 méthodes

Code : Tout sélectionner

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
	Local $aFileList = _FileListToArray(@DesktopDir, "*.txt") ;avec uniquement le nom du fichier
	_ArrayDisplay($aFileList, "$aFileList")
	For $i = 1 To $aFileList[0]
		ConsoleWrite( $aFileList[$i]& @CRLF)
		$File =  $aFileList[$i] & ".cfg"
		$Text = "overlays = 1" & @CRLF & _
        "overlay0_overlay = " & $File & @CRLF & _
		"overlay0_full_screen = true" & @CRLF & _
        "overlay0_descs = 0" ; etc...
	Next
	ConsoleWrite(@CRLF & "autre méthode" & @CRLF & @CRLF)
;============================================ autre méthode ========================================================================
	$aFileList = _FileListToArray(@DesktopDir, "*.txt", $FLTA_FILES, True) ;avec le chemin complet
	_ArrayDisplay($aFileList, "$aFileList")
	For $i = 1 To $aFileList[0]
		ConsoleWrite( NomFichier($aFileList[$i])& @CRLF)
	Next

EndFunc   ;==>Example
Func NomFichier($path)
	Local $split = StringSplit($path, "\")
	$NomFile = $split[UBound($split) - 1]
	Return $NomFile
EndFunc

Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
cedric125yzf
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 10 janv. 2021 06:39
Status : Hors ligne

Re: Script pour cfg overlay

#9

Message par cedric125yzf »

Bonsoir voila j'ai reussi a faire ce que je voulais j'ai juste une manipe a faire avant de lancer le script il faut que je retire les extensions des fichiers images, pas trouver comment les retirer de la variable du tableau.
   Local $aArray = _FileListToArray("E:\Hyperspin\Emulators\Amiga CD 32\overlays\GameBezels\", "*")
   _ArrayDisplay($aArray, "$aArray")



   For $i = 1 To $aArray[0]

   $File = $aArray[$i]&".cfg"

   $Text = "overlays = 1" & @CRLF & _
        'overlay0_overlay = '&'"' & $aArray[$i]&".png"&'"' & @CRLF & _
      "overlay0_full_screen = true" & @CRLF & _
        "overlay0_descs = 0"

      FileWrite($File, $Text)
   Next
Enfin le principal ca fait ce que je voulais. Merci encore
Modifié en dernier par cedric125yzf le mar. 12 janv. 2021 00:39, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11607
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Script pour cfg overlay

#10

Message par Tlem »

Bonsoir.
Pour enlever les 4 derniers caractères (le point + l'extension) vous pouvez utiliser ceci StringTrimRight($aArray[$i], 4)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
cedric125yzf
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 10 janv. 2021 06:39
Status : Hors ligne

Re: Script pour cfg overlay

#11

Message par cedric125yzf »

Merci Thierry ca marche parfaitement
cedric125yzf
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 10 janv. 2021 06:39
Status : Hors ligne

Re: Script pour cfg overlay

#12

Message par cedric125yzf »

Voici le code final avec pour dossier celui ou est placer le script :
   Local $aArray = _FileListToArray(@ScriptDir,"*.png")
   
   For $i = 1 To $aArray[0]
    $aArraya = StringTrimRight($aArray[$i], 4)
   $File = $aArraya&".cfg"

   $Text = "overlays = 1" & @CRLF & _
        'overlay0_overlay = '&'"' & $aArraya&".png"&'"' & @CRLF & _
      "overlay0_full_screen = true" & @CRLF & _
        "overlay0_descs = 0"

      FileWrite($File, $Text)
   Next
cedric125yzf
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 10 janv. 2021 06:39
Status : Hors ligne

Re: Script pour cfg overlay

#13

Message par cedric125yzf »

Au cas ou quelqu'un en aurait besoin
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2194
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Script pour cfg overlay

#14

Message par jchd »

Pour enlever les 4 derniers caractères (le point + l'extension)
Attention : l'extension (si présente) n'est aucunement bornée à 3 caractères. C'est un héritage de DOS (fichiers en 8.3) mais on n'en est plus là.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11607
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Script pour cfg overlay

#15

Message par Tlem »

Salut.
Attention : l'extension (si présente) n'est aucunement bornée à 3 caractères. C'est un héritage de DOS (fichiers en 8.3) mais on n'en est plus là.
FileListToArray(@ScriptDir,"*.png") produira une liste de fichier avec pour extension ".png" soit 4 caractères.

S'il en avait été autrement, j'aurais proposé l'utilisation de PathSplit ou directement une RegExp, mais en la circonstances la simplicité était de mise. :P
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2194
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Script pour cfg overlay

#16

Message par jchd »

Ma remarque n'était que le rappel d'un fait que beaucoup oublient et ne visait pas ta suggestion.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11607
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Script pour cfg overlay

#17

Message par Tlem »

Bonsoir JC.
Ma précision n'est là que pour clarifier la simplicité de ma réponse. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre