Des .bat pour le topic Emulation Console & Arcade

Des .bat pour le topic Emulation Console & Arcade - Shell/Batch - Programmation

Marsh Posté le 06-06-2017 à 04:16:23    

Hello tout le monde !
 
Depuis quelques temps, je demande de l'aide à des gens ou bien je galère à trouver tout seul comment faire tel ou tel truc... Et ce soir je me suis décidé à apprendre à faire des .bat correctement.
 
Ca se passait bien, mais dès qu'il faut manipuler des noms, je suis coooomplètement largué ! :(
 
Du coup je viens vous demander de l'aide...
 
En ce moment, je coince sur un truc un peu délicat, je vous explique.
J'ai un .bat, un dossier "cible" avec dedans des jeux multi-disc :
http://reho.st/self/2dafe86f5197915504dcb6f20f6c6cd1a25a7356.png
 
J'ai besoin de rassembler les fichiers des différents jeux en un seul fichier par jeu.
Il faut donc :
1- Récupérer le nom d'un dossier (OLD)
2- Créer le nouveau nom du dossier (NEW)
3- Vérifier ce dossier (NEW) existe, sinon le créer
4- Déplacer le contenu du dossier (OLD) vers le dossier (NEW)
5- Supprimer le dossier (OLD)
 
Et pour l'étape 2, il y a des règles à respecter :
1- Garder la parenthèse (v-kkchose) si elle existe : (v1.0), (v1.1), (v36.7).
2- Garder TOUT ce qu'il y a avant (Disc 1) ou (Disc 2) ou (Disc 3)... jusqu'à (Disc 6). Et supprimer tout ce qu'il y a à partir de ce fameux (Disc X)
3- Mettre le (v-kkchose) à la fin du dossier
 
J'illustre ça pour bien comprendre :
http://reho.st/self/08189a37c731c7cdd4c8124bb6c7cf4ebf2a581c.png
Une fois les le dossier NEW créé, on déplace les fichiers dedans (flèches bleues), et ensuite on supprime le OLD.
 
J'espère que c'est assez clair et que quelqu'un saura m'aider !!
Je remercie d'avance ceux qui se pencheront sur ce problème...  :jap:


Message édité par Ariakan le 06-06-2017 à 04:18:23

---------------
Ariakan.com
Reply

Marsh Posté le 06-06-2017 à 04:16:23   

Reply

Marsh Posté le 06-06-2017 à 11:54:50    

Le Batch c'est pas génial comme truc... T'es obligé de faire ça en Batch? Avec un language script (genre Perl) ou du Powershell (que je ne connais pas du tout) ça doit être moins chiant je pense.

Reply

Marsh Posté le 06-06-2017 à 17:17:43    

Boaf, un truc que je puisse facilement partager aux joueurs ça m'ira bien, peu importe le langage. :D
Je n'y connais pas grand chose en script dans ce genre là, c'est surtout que je bidouille des choses en Batch depuis quelques semaines pour faire des petits scripts, mais je ne me rends pas bien compte de la complexité du langage par rapport à d'autres...


---------------
Ariakan.com
Reply

Marsh Posté le 06-06-2017 à 19:05:15    

Ariakan a écrit :

Boaf, un truc que je puisse facilement partager aux joueurs ça m'ira bien, peu importe le langage. :D

Ah oui, ça c'est argument contre le Perl car il faut l'installer. Par contre le Python on peut faire des exécutables avec mais je ne maîtrise pas...

Citation :

Je n'y connais pas grand chose en script dans ce genre là, c'est surtout que je bidouille des choses en Batch depuis quelques semaines pour faire des petits scripts, mais je ne me rends pas bien compte de la complexité du langage par rapport à d'autres...

C'est pas la complexité du language, au contraire, c'est un language trop limité je dirais. :o  
 
Vu tes demandes, ça ne serait pas plus facile de renommer les dossiers existants ou j'ai raté un truc?

Reply

Marsh Posté le 06-06-2017 à 19:37:43    

C'est parce que j'ai 3000 jeux. :D
Et puis c'est surtout pour proposer aux retro-gamers des outils clés en main, comme je le fais sur le topic : http://forum.hardware.fr/hfr/JeuxV [...] 4637_1.htm
Pour les autres consoles, y'avait pas de galère, mais pour les jeux PS1 il y a les jeux sans .cue, les jeux avec plusieurs .bin, les jeux avec plusieurs disques, les jeux avec plusieurs .bin et plusieurs disques, les jeux avec un seul .cue...
Bref, je galère depuis un moment, et là je bloque sur ce sujet en particulier pour partie bien spéciale qui permet de simplifier le swappe entre deux disques directement depuis l'émulateur. :D


Message édité par Ariakan le 06-06-2017 à 19:38:25

---------------
Ariakan.com
Reply

Marsh Posté le 06-06-2017 à 19:55:06    

Je voulais bien sûr dire "faire renommer par un script"! Je ne comprends pas pourquoi créer un nouveau dossier, copier/déplacer le contenu de l'ancien vers le nouveau puis effacer l'ancien dossier plutôt que de renommer directement le dossier existant (de manière automatique). :??:

Reply

Marsh Posté le 06-06-2017 à 20:16:33    

Alors, je vais tenter d'être clair, mais c'est pas sûr. :D
En gros, je suis obligé de regrouper les éléments de plusieurs dossiers au sein d'un seul. (sinon on ne peut pas les regrouper pour le swap de disque)

 

Ensuite pourquoi créer un dossier puis déplacer dedans ?
Parce que j'ai trouvé plus simple de faire :
(NEW = dossier (nouveau ou renommé) avec nouveau nom, OLD = dossier avec ancien nom)

 

- Créer le nom
- Vérifier si un dossier NEW avec ce nom existe déjà, sinon le créer
- Déplacer fichiers dans NEW
- Supprimer le dossier OLD

 

Plutôt que :
- Voir le nom que prendra le dossier NEW si je le renomme
- Si ce nom là n'existe pas déjà, le renommer et ne rien déplacer
- Si ce nom existe déjà, déplacer les fichiers dans ce dossier NEW
- Supprimer le dossier OLD


Message édité par Ariakan le 06-06-2017 à 20:16:58

---------------
Ariakan.com
Reply

Marsh Posté le 08-06-2017 à 15:46:34    

l'ancien vers le nouveau puis effacer l'ancien dossier plutôt que de renommer directement le dossier existanthttp://www.ximi.us/usa/images/71.gif

Reply

Marsh Posté le 08-06-2017 à 20:47:35    

Comme je l'explique juste au dessus, dans tous les cas il va falloir déplacer les fichiers d'un dossier vers un autre à un moment (pour rassembler au même endroit les éléments du Disc 1, Disc 2, etc...). Après si vous trouvez plus simple de renommer Disc 1 puis de déplacer Disc 2, Disc 3, etc... aucun problème, tant mieux même si quelqu'un voit comment faire vu que les solutions ne se bousculent pas au portillon pour l'instant. :D


Message édité par Ariakan le 08-06-2017 à 20:48:12

---------------
Ariakan.com
Reply

Marsh Posté le 12-06-2017 à 14:23:05    

drap


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
Reply

Marsh Posté le 12-06-2017 à 14:23:05   

Reply

Marsh Posté le 12-06-2017 à 22:35:32    

rat de combat a écrit :

Ah oui, ça c'est argument contre le Perl car il faut l'installer. Par contre le Python on peut faire des exécutables avec mais je ne maîtrise pas...

Raton Teigneux, tu installes la Perl Archive Toolkit (PAR pour les intimes), et le module PAR::Packer, lequel t'installe l'utilitaire pp qui te permet de créer des exécutables "fingers in ze nose": pp -o monscript.exe monscript.pl
J'ai encore fait ça vendredi pour filer un script sous forme exécutable a mon manager qui ne peut pas installer perl sur son portable de travail (pas les droits admin a décrété ITOps).
 
A+,


Message édité par gilou le 12-06-2017 à 23:25:35

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 13-06-2017 à 00:50:07    

Malheureusement impossible d'installer PAR::Packer chez moi, en regardant mes notes je vois que j'avais déjà essayé sans succès il y a plus de deux ans... Voulant changer d'ordi et d'OS prochainement je ne vais pas m'embêter je pense, je testerai quand je serai sous Linux. Merci pour le rappel. Par contre j'ai pas compris le "Raton Teigneux", c'est péjoratif ça non? :o

Reply

Marsh Posté le 13-06-2017 à 10:22:11    

rat de combat a écrit :

Malheureusement impossible d'installer PAR::Packer chez moi, en regardant mes notes je vois que j'avais déjà essayé sans succès il y a plus de deux ans... Voulant changer d'ordi et d'OS prochainement je ne vais pas m'embêter je pense, je testerai quand je serai sous Linux. Merci pour le rappel. Par contre j'ai pas compris le "Raton Teigneux", c'est péjoratif ça non? :o


Non non, pas péjoratif. Juste plus imagé :) (un rat de combat, je visualise pas bien, un raton teigneux, je visualise mieux)
 
PAR & PAR::Packer, ils s'installent sans pb avec la version courante d'Active Perl (5.24.1). Sous win7 et win10.  
Elle est tres bien cette version 5.24.1, puisqu'elle contient aussi le module Tk (pas toujours le cas avec les distribs Active Perl).
 
Et sinon, tu as le produit commercial perl2exe, qui en version gratuite, fait la même chose, mais avec un message de pub et un délai de 2s en plus.
 
A+,
 
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 13-06-2017 à 23:55:40    

gilou a écrit :

Non non, pas péjoratif. Juste plus imagé :) (un rat de combat, je visualise pas bien, un raton teigneux, je visualise mieux)

D'accord, j'ai pas compris mais si tu le dis... Pas de problème. :)

 

Je suis toujours sous XP (oui je sais :o ), comme je disais je vais passer sous Linux, je ne vais même pas essayer (de faire fonctionner ce truc) sur mon système actuel, ça vaut pas (plus) la peine.


Message édité par rat de combat le 13-06-2017 à 23:56:07
Reply

Marsh Posté le 14-06-2017 à 08:51:07    

Comme ratdecombat suggère, il vaut mieux se tourner vers un langage plus évolué.
Je connais mieux python, donc je te conseillerais ce langage.
Voici une page où tu as des manipulations de dossiers.
https://python.developpez.com/faq/?page=Repertoire

Reply

Marsh Posté le 08-01-2018 à 15:02:50    

drap
 
@Ariakan t'as trouvé comment faire ton script ?
 
J'ai pas regardé en détails mais c'est le genre de problème easy à faire en powershell, et ça tourne nickel par défaut sous Windows.


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 09-01-2018 à 14:28:08    

Ou sinon utiliser un gestionnaire comme clrmamepro par exemple


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-01-2018 à 14:35:05    

ça fait pas vraiment la même chose :D


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 21-03-2018 à 12:47:23    

Salut Ariakan,
 
Ce projet m'interesse pour une mise en jambe sur Python :D
 
Tu pourrais m'envoyer une liste de tous les repertoires qui se trouvent dans ton dossier de roms PS1 ?  
 
si tu ne sais pas comment faire, tu peux lancer powershell, te déplacer ( commande "cd" ) dans le repertoire parent de tes roms puis lancer la commande :
 
Get-ChildItem | ?{ $_.PSIsContainer } | Select-Object Name >> list_roms_PS1.txt
 
Le fichier list_roms_PS1.txt contiendra le nom des dossiers de tes roms que tu pourras m'envoyer.
 
On est d'accord qu'une fois le nom des dossiers "new" a été construit, on copie le contenu des dossiers "disc n" dedans sans autre changement ? Que doit faire le script si disc 1 et disc 2 ont des fichiers du même nom ? Est-ce qu'il y a des cas où on doit copier des sous dossiers et si oui doit on les copie tels quels ?

Reply

Marsh Posté le 23-03-2018 à 06:22:20    

Hello !

 

En fait en y réfléchissant, je ne sais pas si c'est vraiment une si bonne idée de se prendre la tête là dessus.

 

Pour faire un résumé et un rappel :
- Les jeux avec plusieurs .bins ne peuvent pas être compressées car quand on combine les .bin de différentes manières, il y a toujours un bug quelque part.
- Les jeux avec plusieurs disques peuvent être compressés (si il n'y a qu'un seul .bin par disque), ou bien peuvent utiliser un fichier playlist .m3u pour être utilisé dans RetroArch et pouvoir switcher de disque en pleine partie.

 

Au final, les jeux PS1 peuvent être triés en 4 dossiers :

  • A) Les jeux "1 Disc X Bin" : un seul disque et plusieurs .bin. On ne peut pas les compresser, et pas besoin de playlist .m3u
  • B) Les jeux "X Disc X Bin" : plusieurs disques et plusieurs .bin. On ne peut pas les compresser, mais on peut créer une playlist .m3u
  • C) Les jeux "X Disc 1 Bin" : plusieurs disques et un seul .bin. On peut les compresser en un seul .pbp
  • D) Les jeux "1 Disc 1 Bin" : un seul disque et un seul .bin. On peut les compresser en .pbp


Du coup, dans les frontends, on se retrouve avec une partie des jeux à ajouter via les .cue (A), une partie via les .m3u (B) et une autre partie via les .pbp (C et D).
Si effectivement on pourrait gagner de la place avec la compression, il se peut aussi parfois qu'elle pose des soucis d'émulation (Ça n'a pas l'air fréquent, mais ça arrive. Cela dit, c'est un peu le cas pour d'autres compressions pour d'autres émulateurs d'autres consoles)

 

Donc est-ce que ça vaut le coup ?

 

Je me dis finalement que je préfère peut-être sacrifier une partie de la compression (surtout que peu de gens ont 3000 jeux pour 1.4 To comme moi pour la PS1) pour partir sur une uniformisation du format des jeux, et de créer des .m3u pour TOUS les jeux (même ceux avec un seul disque), comme ça c'est plus simple à ajouter dans les frontends et à gérer donc. :)

 

Alors après, je veux bien de l'aide pour ça. :D Je vais détailler ici ce qu'il faudrait faire, si quelqu'un est motivé. (idéalement un truc que n'importe qui pourrait lancer facilement, comme mes .bat que je fais et qui sont tout cons à lancer en 2 clics pour n'importe quelle personne)
Ça va reprendre en très grande partie ce que je détaille dans le premier post de ce topic, sauf que cette fois on ne va pas séparer les jeux en différents dossiers (enfin on peut si besoin pour le traitement un peu plus lourd que je ne sais pas faire)
Et du coup, si on décide de partir sur la compression, ce qu'on va faire là sera utile quoi qu'il arrive car c'est une étape obligatoire !

 

---------------------------------

 

EDIT : en dessous de cet édit j'ai pondu un super truc détaillé concernant le regroupement des disques d'un même jeu. Mais je viens de me demander quelque chose : et si on ne touchait pas à la structure même du fullset ?
On pourrait laisser les dossiers tels quels et juste créer les playlist .m3u dans le dossier racine contenant tous les dossiers des jeux.

 

Du genre :

[Dossier] Fullset PS1
    --- [Dossier] Final Fantasy VII (France) (Disc 1)
    --- [Dossier] Final Fantasy VII (France) (Disc 2)
    --- [Dossier] Gran Turismo (Europe)
    --- [Dossier] Metal Gear Solid (USA) (Disc 1) (v1.0)
    --- [Dossier] Metal Gear Solid (USA) (Disc 1) (v1.1)
    --- [Dossier] Metal Gear Solid (USA) (Disc 2) (v1.0)
    --- [Dossier] Metal Gear Solid (USA) (Disc 2) (v1.1)
    --- [Fichier] Final Fantasy VII (France).m3u
    --- [Fichier] Gran Turismo (Europe).m3u
    --- [Fichier] Metal Gear Solid (USA) (v1.0).m3u
    --- [Fichier] Metal Gear Solid (USA) (v1.1).m3u

 

Donc en gros, le serait d'avoir :
1- un dossier par jeu multi-disc avec à l'intérieur tous les .cue, .bin et .m3u ? (Plus simple pour déplacer/copier ses jeux, mais ça casse la structure d'un fullset redump)
2- un dossier par cd, avec en plus à part un fichier .m3u ? (Ça préserve la structure du fullset, mais c'est plus chiant quand on veut copier/déplacer un jeu)

 

Le débat est lancé. :o En attendant la procédure qui suit part sur l'idée n°1 !

 

---------------------------------

 

Etape -1 : mettre les .cue manquant (Facultatif et manuel)

 

Il se peut que dans un romset il manque des .cue.
On peut les ajouter manuellement.

 

D'abord il faut créer le fichier .bat suivant :

@echo off
for /d /r %%f in (*) do (
   if not exist %%f\*.cue (
       echo %%f >>"PSX - Find Missing .CUE Games.txt"
   )
)

 

PAUSE


Ensuite il faut faire ceci :

  • Récupérer tous les .cue des jeux PS1 sur le site Redump.org : http://redump.org/cues/psx/
  • Le placer dans .bat que vous venez de créer contenant tous les autres dossiers de jeux PS1 et l'executer
  • Ouvrir le fichier "PSX - Find Missing .CUE Games.txt" créé par le .bat
  • Placer les .cue manquant dans les dossiers indiqués
  • Supprimer le .bat, le fichier "PSX - Find Missing .CUE Games.txt" et la liste des .cue que l'on a téléchargé sur le site Redump.org.


Cette étape là on s'en fout pour vous, mais je la note pour pas l'oublier dans mon futur tuto. :o

 

Etape 0 : séparer les jeux en 2 dossiers (Facultatif)
Ceux avec plusieurs disques, ceux avec un seul disque.
Cette étape n'est utile QUE SI vous pensez que ça facilitera les étapes suivantes.

 

J'ai déjà créé le .bat, qu'il suffit de mettre dans le dossier contenant tous les dossiers des jeux :

@echo off

 

REM ************************
REM ### Multi Disc Games ###
REM ************************

 

echo Searching for Multi Disc Games : START
for /d %%d in (*) do (
    if exist %%d\*"(Disc 1)"*.bin (
        if not exist "### Multi Disc Games ###" mkdir "### Multi Disc Games ###"
        move "%%d" "### Multi Disc Games ###"
    )
    if exist %%d\*"(Disc 2)"*.bin (
        if not exist "### Multi Disc Games ###" mkdir "### Multi Disc Games ###"
        move "%%d" "### Multi Disc Games ###"
    )
    if exist %%d\*"(Disc 3)"*.bin (
        if not exist "### Multi Disc Games ###" mkdir "### Multi Disc Games ###"
        move "%%d" "### Multi Disc Games ###"
    )
    if exist %%d\*"(Disc 4)"*.bin (
        if not exist "### Multi Disc Games ###" mkdir "### Multi Disc Games ###"
        move "%%d" "### Multi Disc Games ###"
    )
    if exist %%d\*"(Disc 5)"*.bin (
        if not exist "### Multi Disc Games ###" mkdir "### Multi Disc Games ###"
        move "%%d" "### Multi Disc Games ###"
    )
    if exist %%d\*"(Disc 6)"*.bin (
        if not exist "### Multi Disc Games ###" mkdir "### Multi Disc Games ###"
        move "%%d" "### Multi Disc Games ###"
    )
)
echo Searching for Multi Disc Games : END

 


REM *******************
REM ### One Disc Games ###
REM *******************

 

echo Searching for One Disc Games : START
for /d %%o in (*) do (
    if exist %%o\*.cue if exist %%o\*.bin (
        if not exist "### One Disc Games ###" mkdir "### One Disc Games ###"
        move "%%o" "### One Disc Games ###"
    )
)
echo Searching for One Disc Games : END

 

PAUSE

 

Etape 1 : grouper les disques d'un même jeu et d'une même version dans un seul dossier

 

Les dossiers des jeux multi-disc peuvent être écrit ainsi :

 
  • Nom du jeu (Région) (Langues) (Disc 1) (v1.0) (Info X)
  • Nom du jeu (Région) (Langues) (Disc 2) (v1.0) (Info Y)


En vert ça y est tout le temps, en rouge ça dépend des fois. Il faut savoir que le maximum est (Disc 6) pour le nombre de disque.
Au final, chaque dossier d'une version d'un jeu ressemblera à ça :

 
  • Nom du jeu (Région) (Langues) (v1.0)


Il faut donc pour chaque jeu :

  • Récupérer tout ce qu'il y a avant (Disc 1) : Nom du jeu (Région) (Langues). Les langues seront automatiquement récupérées si elles existent car elles se trouvent toujours avant le numéro du disque.
  • Récupérer, si elle existe, la version du jeu : (v1.0). Donc il faut chercher après le (Disc X) un truc qui commence par "(v" et terminer sur " )".
  • Créer le dossier : Nom du jeu (Région) (Langues) (v1.0)
  • Déplacer tous les fichiers (les .cue et les .bin, sans JAMAIS les renommer) de chaque dossier (de la bonne version du jeu : v1.1, v1.2, etc...) dans ce nouveau dossier
  • Supprimer les anciens dossiers (de la bonne version du jeu)


Exemples : (Je mets en rouge ce qui va disparaître)

 

- Armored Core - Master of Arena (USA) (Disc 1)
- Armored Core - Master of Arena (USA) (Disc 2)
-> Armored Core - Master of Arena (USA)

 

- Command & Conquer - Red Alert (USA) (Disc 1) (Allies)
- Command & Conquer - Red Alert (USA) (Disc 2) (Soviet)
-> Command & Conquer - Red Alert (USA)

 

- Metal Gear Solid (USA) (Disc 1) (v1.0)
- Metal Gear Solid (USA) (Disc 2) (v1.0)
-> Metal Gear Solid (USA) (v1.0)

 

- Metal Gear Solid (USA) (Disc 1) (v1.1)
- Metal Gear Solid (USA) (Disc 2) (v1.1)
-> Metal Gear Solid (USA) (v1.1)

 

- Resident Evil 2 - Dual Shock Ver. (USA) (Disc 1) (Leon))
- Resident Evil 2 - Dual Shock Ver. (USA) (Disc 2) (Claire))
-> Resident Evil 2 - Dual Shock Ver. (USA)

 

- HFR Gaming (Europe) (En,Fr,De,Es) (Disc 1) (v2.0) (Utilisateur)
- HFR Gaming (Europe) (En,Fr,De,Es) (Disc 2) (v2.0) (Moderateur)
-> HFR Gaming (Europe) (En,Fr,De,Es) (v2.0)

 

Etape 2 : créer les playlist .m3u

 

Pour chaque dossier, il faut créer des .m3u reprenant le nom du dossier contenant la liste des fichiers .cue.

 

Avec l'exemple du jeu "HFR Gaming (Europe) (En,Fr,De,Es) (v2.0)", ça nous donnerait un fichier .m3u qui contiendrait ces deux lignes :

HFR Gaming (Europe) (En,Fr,De,Es) (Disc 1) (v2.0) (Utilisateur).cue
HFR Gaming (Europe) (En,Fr,De,Es) (Disc 2) (v2.0) (Moderateur).cue


Et dans le dossier on aurait ces fichiers là :

HFR Gaming (Europe) (En,Fr,De,Es) (Disc 1) (v2.0) (Utilisateur).bin
HFR Gaming (Europe) (En,Fr,De,Es) (Disc 1) (v2.0) (Utilisateur).cue
HFR Gaming (Europe) (En,Fr,De,Es) (Disc 2) (v2.0) (Moderateur).bin
HFR Gaming (Europe) (En,Fr,De,Es) (Disc 2) (v2.0) (Moderateur).cue
HFR Gaming (Europe) (En,Fr,De,Es) (v2.0).m3u

 

Pour un jeu avec un seul disque (exemple : 5 Star Racing (Europe) qui a plusieurs .bin), ça donnerait le fichier "5 Star Racing (Europe).m3u" avec une seule ligne :

5 Star Racing (Europe).cue


Et le dossier contiendrait :

5 Star Racing (Europe) (Track 01).bin
5 Star Racing (Europe) (Track 02).bin
5 Star Racing (Europe) (Track 03).bin
5 Star Racing (Europe) (Track 04).bin
5 Star Racing (Europe) (... jusqu'à 12).bin
5 Star Racing (Europe).cue
5 Star Racing (Europe).m3u

 

Je viens de me rappeler que j'avais fait un .bat aussi pour ça. Je n'arrive même plus à comprendre ce que j'ai marqué, mais ça a l'air de marcher. :o

 

@echo off

 


REM **************************
REM ### .m3u Generator ###
REM **************************

 

echo Searching for Multi Disc Games and Create .m3u files : START

 

REM ***********
REM DELETE .M3U
REM ***********

 

echo Delete .m3u

 

for /d %%m in (*) do (
    if exist "%%~m\*.m3u" del "%%~m\*.m3u"
)

 


REM ***********
REM CREATE .M3U
REM ***********

 

echo Create .m3u

 

for /r %%f in (*.cue) do (
    echo %%~nxf >> "%%~pf/.m3u"
)

 

REM ***********
REM RENAME .M3U
REM ***********

 

echo Rename .m3u

 

for /d %%d in (*) do (
    if exist "%%~d\.m3u" ren "%%~d\.m3u" "%%~d.m3u"
)

 

echo Searching for Multi Disc Games and Create .m3u files : END

 

PAUSE

 

C'est vraiment l'étape de regroupement des disques qui m'a bloqué l'année dernière. :D

 

Etape 3 : remettre tous les jeux ensemble (facultatif, seulement si on a fait l'étape 0 pour tout séparer)
On remets tous les jeux "One Disc" et "Multi Disc" ensemble. :)

 

Voilà. :o

 

Ça fait un gros pavé, mais y'a pas grand chose à faire, je voulais juste bien détailler le regroupage et renommage de fichiers. :D
J'ai créé une archive avec une fausse liste de fichiers de jeux, et les .bat. Comme ça ça vous pourrez tester les .bat, mais aussi avoir une liste de dossiers de jeux pour faire vos tests avec vos scripts ! Il y a aussi le .bat pour trouver les jeux qui n'ont pas de .cue, si vous avez un fullset à scanner.

 

Télécharger l'archive PS1 - Base de travail pour le script.zip
(Quand ça vous demandera votre numéro de CB, n'oubliez pas les 3 petits numéros derrière la carte. :o :o :o )


Message édité par Ariakan le 23-03-2018 à 06:27:36

---------------
Ariakan.com
Reply

Marsh Posté le 23-03-2018 à 12:21:36    

Tu peux aussi combiner les bin en iso https://github.com/recalbox/recalbo [...] O-%28FR%29
Et isobuster semble avoir des options pour fonctionner en ligne de commande https://www.isobuster.com/fr/help/u [...] e_commande
 
Donc tu peux :
- utiliser isobuster pour convertir bin -> iso
- convertir multi-iso -> simple pbp
 
magie :o
 

Citation :

Je n'arrive même plus à comprendre ce que j'ai marqué


Normal, c'est du batch :o
Passe en powershell, c'est pas hyper compliqué :o


Message édité par cosmoschtroumpf le 23-03-2018 à 12:24:46

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 23-03-2018 à 15:06:12    

Non non non, on a déjà essayé plein de trucs avec manulelutin pour combiner les .bin, dont isobuster. Le .cue généré n'était pas bon, et sur certains jeux la musique disparait du coup.
On a beaucoup cherché et il ne semble pas y avoir de solution miracle... Je pense que c'est pour ça que depuis la sortie de la PS1 on a toujours de multiples .bin et qu'on a jamais eu des iso. :(

 

Edit : ah mais j'avais pas vu le premier lien, apparemment ils ont trouvé un truc qui fonctionne.... ? Je vais tester ça. Mais je suis quasi sûr que ça va merder.

 

Ah tiens, toi qu'est balèze en Powershell tu veux pas faire "l'étape 1" qui me bloque ? :o


Message édité par Ariakan le 23-03-2018 à 15:10:13

---------------
Ariakan.com
Reply

Marsh Posté le 23-03-2018 à 15:51:38    

Je crois pas que tu aies besoin de cue quand tu as un iso, si ?
 
 
 
L'étape 1 ne pourra pas se faire en batch (du moins pas sans y passer des jours), tu auras besoin de powershell (je vais bien réussir à t'obliger à y passer :o) avec des regex.
 
Voici une "petite" regex pour extraire les infos dont tu as besoin.
C'est pas très lisible (je veux dire, encore plus que d'habitude avec une regex), parce qu'il y a beaucoup de parenthèses dans tes noms de dossiers.
 

Code :
  1. ^([^(]+)(?: \(([\w\s,]+)\))?(?:( \([\w\s,]+\)))? \(Disc \d\)(?:( \([vV\d\.]+\)))?(?: \(.\))?


 
Si tu veux y comprendre quelque chose je te conseille un outil comme https://regexr.com/ et tu passes ta souris par-dessus chaque élément de la regex.
Ensuite plus qu'à remplacer avec un bête "$1 ($2)$3$4" pour avoir ton nom final.
Démonstration : https://regexr.com/3movn
 
 
Plus qu'à coller ça dans une boucle :o
Je te tape ça de tête, sans tester.
 

Code :
  1. # on va traiter tous les dossiers "disc 1" dans le dossier courant
  2. Get-ChildItem | ? { $_.PSIsContainer -and $_.Name.Contains("Disc 1" ) } | % {
  3.     # dossier final
  4.     $target = $_.Name -replace "^([^(]+)(?: \(([\w\s,]+)\))?(?:( \([\w\s,]+\)))? \(Disc \d\)(?:( \([vV\d\.]+\)))?(?: \(.\))?", "$1 ($2)$3$4"
  5.     New-Item -ItemType Directory -Path $target
  6.     # on va déplacer tous les disques un par un
  7.     $template = $_.Name -replace "Disc 1", "Disc {num}"
  8.     $num = 1
  9.     while (Test-Path ($template -replace "{num}", $num)) {
  10.         Move-Item -Path "$_.Name\*.*" -Destination $target
  11.         $num++
  12.     }
  13.     # on va se créer les m3u au passage
  14.     Get-ChildItem $target | ? { $_.Name.EndsWith(".cue" ) } | % { $_.Name } | Out-File "$target.m3u"
  15. }


 
A savoir qu'il suffit de rajouter "-WhatIf" après "New-Item" et "Move-Item" et ça ne déplace rien, ça te met juste un message. Pratique pour tester.
 
Y'a moyen de faire mieux (y'a toujours moyen de faire mieux en powershell) et plus propre (on doit pouvoir supprimer le while en utilisant la regex, et probablement même le new-item) mais je te fais ça à l'arrache :o
 
On va dire que c'est le concept :o


Message édité par cosmoschtroumpf le 23-03-2018 à 23:06:12

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 23-03-2018 à 16:35:39    

Non, en ISO t'as tout. Sauf qu'apparemment, sur les jeux avec des pistes audio et ben ça plante.
 
Là par exemple je viens d'essayer ton tuto avec le jeu "Street Fighter Alpha - Warriors' Dreams (Europe)" -> j'ai converti en .iso -> j'ai converti en .pbp -> dès qu'il y a de la musique, ça "plante". (écran noir, le jeu cherche la piste audio) :(
 
----------------
Pour le reste honnêtement, j'ai passé des DIZAINES d'heures sur les jeux PS1 à bosser sur la compression et tout le bordel, honnêtement je ne vais plus passer plus de temps là dessus personnellement, j'ai déjà trop donné. :D
 
Je relance car on m'a relancé (et tu m'avais relancé il y a quelques semaines aussi ici), et si jamais tu veux me faire un truc qui fonctionne en powershell, je prends ! Mais je ne vais pas apprendre à le faire, j'ai plus le temps (à cause de mes nouvelles études, d'ailleurs j'ai une soutenance dans 2h30 là !) et la motivation après le gros échec que ça a été l'année dernière quand j'ai passé autant d'heures dessus. Sans parler des autres dizaines d'heures à faire tous les autres utilitaires, recherches, tuto, etc, pour les compressions des autres système... Donc si quelqu'un est motivé, je prends avec plaisir, mais je ne fais que tester perso. :D
 
J'ai fait une archive en bas de mon dernier gros post qui permet de faire des tests facilement pour les motivés !
----------------
 
Du coup merci pour ton powershell ! Je teste ça dans la soirée (de Martinique) quand j'aurais terminé tout ce que j'ai à faire aujourd'hui ! :D


---------------
Ariakan.com
Reply

Marsh Posté le 23-03-2018 à 16:40:55    

Si t'as testé et que ça marche pas, je te fais confiance, y'a des chances que ça ne marche effectivement pas :D
Moi ça me dérange pas plus que ça d'avoir les bin de toute façon.
Moi aussi j'ai plein de projets en cours :D


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 23-03-2018 à 16:50:55    

Moi non plus, c'était juste pour gagner de la place à la base. :o
Après là le projet c'est de se dire "on s'en fout de la compression" mais de faire des playlist pour les jeux PS1 pour que le multidisc fonctionne correctement. :p
 
Je teste ton truc dans la soirée, je te fais un retour !


---------------
Ariakan.com
Reply

Marsh Posté le 23-03-2018 à 22:28:16    

Bon ça n'a pas marché. Ça a fait des trucs, mais pas ce qu'il fallait. :D (des .m3u vides et des dossiers vides)
http://reho.st/reho.st/https://image.prntscr.com/image/7I8yL_OBTQ6_qonIHJ_cHw.png


---------------
Ariakan.com
Reply

Marsh Posté le 23-03-2018 à 23:10:46    

Bon ben je peux pas t'aider plus ce week-end j'ai pas de PC chez moi :o
 
Ca doit être au niveau de la regex qu'il manque un truc. La regex est bonne (testée sur regexr), à moins que les regex Powershell marchent différemment (ça arrive), je pense que c'est au niveau du replace que ça merde, mais comme je peux pas tester... :/


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
Reply

Marsh Posté le 25-03-2018 à 13:24:26    

drap

Reply

Marsh Posté le 25-03-2018 à 16:11:15    

cosmoschtroumpf a écrit :

Bon ben je peux pas t'aider plus ce week-end j'ai pas de PC chez moi :o
 
Ca doit être au niveau de la regex qu'il manque un truc. La regex est bonne (testée sur regexr), à moins que les regex Powershell marchent différemment (ça arrive), je pense que c'est au niveau du replace que ça merde, mais comme je peux pas tester... :/


Haha, t'inquiète pas, c'est déjà super gentil de te pencher sur le sujet. :D J'ai abandonné la gestion des jeux PS1 l'année dernière, donc je ne suis plus à un week-end près. :o


---------------
Ariakan.com
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed