Page 1 sur 1

Script pour cfg overlay

Posté : dim. 10 janv. 2021 06:50
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

Re: Script pour cfg overlay

Posté : dim. 10 janv. 2021 15:49
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

Re: Script pour cfg overlay

Posté : dim. 10 janv. 2021 19:03
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)

Re: Script pour cfg overlay

Posté : dim. 10 janv. 2021 20:53
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.

Re: Script pour cfg overlay

Posté : dim. 10 janv. 2021 22:53
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...

Re: Script pour cfg overlay

Posté : lun. 11 janv. 2021 00:10
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)

Re: Script pour cfg overlay

Posté : lun. 11 janv. 2021 14:59
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.

Re: Script pour cfg overlay

Posté : lun. 11 janv. 2021 16:22
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


Re: Script pour cfg overlay

Posté : mar. 12 janv. 2021 00:08
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

Re: Script pour cfg overlay

Posté : mar. 12 janv. 2021 00:34
par Tlem
Bonsoir.
Pour enlever les 4 derniers caractères (le point + l'extension) vous pouvez utiliser ceci StringTrimRight($aArray[$i], 4)

Re: Script pour cfg overlay

Posté : mar. 12 janv. 2021 00:46
par cedric125yzf
Merci Thierry ca marche parfaitement

Re: Script pour cfg overlay

Posté : mar. 12 janv. 2021 02:36
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

Re: Script pour cfg overlay

Posté : mar. 12 janv. 2021 02:37
par cedric125yzf
Au cas ou quelqu'un en aurait besoin

Re: Script pour cfg overlay

Posté : mar. 12 janv. 2021 03:08
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à.

Re: Script pour cfg overlay

Posté : mar. 12 janv. 2021 07:49
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

Re: Script pour cfg overlay

Posté : mar. 12 janv. 2021 14:37
par jchd
Ma remarque n'était que le rappel d'un fait que beaucoup oublient et ne visait pas ta suggestion.

Re: Script pour cfg overlay

Posté : mar. 12 janv. 2021 23:38
par Tlem
Bonsoir JC.
Ma précision n'est là que pour clarifier la simplicité de ma réponse. ;)