France Echecs Bandeau France Echecs |  
---- Wednesday 12 August 2026
--- ---- --- Ecrire au webmaster
Nom d’utilisateur   Code d’accès 
--- --- ---
Forums  | Devenir membre | Mot de passe oublié ? | Charte | A propos Contacter France-Echecs
Actualités   Actualités
Tournois   Tournois
Ouvertures   Ouvertures
Clubs   Clubs
Informatique   Informatique
Arbitrage   Arbitrage
Problèmes   Problèmes
FAQ   FAQ
Etudes   Etudes
Finales   Finales
Théorie   Théorie

 Rechercher sur le site  

Abonnez-vous à la revue Europe-Echecs
Si vous êtes comme moi par Bo*** S*1442 le  [Aller à la fin] | Informatique |
et que vous avez pleins de fichiers pgn dispersés aux 4 coins de votre disque dur, voici un script qui les rassemblera tous en un seul fichier automatiquement !

Copier le texte situé entre les étoiles dans un fichier texte avec l'extension ".vbs"
.Par exemple "totalpgn.vbs" et cliquer sur le ficher via l'explorateur.
***********************************
'Par Boris S
'Concatene ts les pgn à partir
'd'un répertoire ( récursivité )
Dim fso
Dim folder
Dim Depart

Set fso = CreateObject("Scripting.FileSystemObject")

Depart=inputbox ("Entrer le répertoire de départ", "Mettre un à la fin")
Set folder = fso.GetFolder(Depart)

listfolders folder

msgbox "Terminé" & chr(13) & "BASE.PGN Créé"

Public Sub listfolders(f)
Dim g
'msgbox "repertoire:" & f.Name

Dim Files
Dim File

Set Files = f.Files

If Files.Count <> 0 Then
For Each File In Files
if fso.GetExtensionName(File.name )="pgn" then Ajoute File
Next
End If


For Each g In f.SubFolders
listfolders g
Next
End Sub


Sub Ajoute(UnFicPgn)
if UnFicPgn.name = "base.pgn" then exit sub
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set f = fso.OpenTextFile(UnFicPgn.path, ForReading, True)
ContenuFic=f.ReadAll
f.Close

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("base.pgn", ForAppending , True)
f.write ContenuFic
f.Close

end sub
***********************************
Fonctionne à partir de W98



merci pour eux mais bon pourquoi il traine partout ?sinon cat fais du bon boulot merde c'est sous linux..


Amélioration du script.... J'ai modifié ton script comme suite pour qu'on puisse choisir le nom du fichier dans lequel les pgn seront concaténés :

'Par Boris S'Concatene ts les pgn à partir'd'un répertoire ( récursivité )'modifié par Pascal GDim fsoDim folderDim Depart'Rajout par PascalDim NomBaseSet fso = CreateObject("Scripting.FileSystemObject")Depart=inputbox ("Entrer le répertoire de départ", "Mettre un à la fin")Set folder = fso.GetFolder(Depart)'Rajout par PascalNomBase=inputbox ("Entrer le nom du fichier pour la base PGN qui va être créée", "Nom de votre base ?")listfolders folder'Ligne modifiée par Pascalmsgbox "Terminé" & chr(13) & NomBase +".PGN Créé"Public Sub listfolders(f)Dim g 'msgbox "repertoire:" & f.NameDim FilesDim FileSet Files = f.FilesIf Files.Count 0 ThenFor Each File In Filesif fso.GetExtensionName(File.name )="pgn" then Ajoute FileNextEnd IfFor Each g In f.SubFolderslistfolders gNext End SubSub Ajoute(UnFicPgn)'Ligne modifiée par Pascalif UnFicPgn.name = NomBase +".pgn" then exit subConst ForReading = 1, ForWriting = 2, ForAppending = 8Set f = fso.OpenTextFile(UnFicPgn.path, ForReading, True)ContenuFic=f.ReadAllf.CloseSet fso = CreateObject("Scripting.FileSystemObject")Set f = fso.OpenTextFile(NomBase +".pgn", ForAppending , True)f.write ContenuFicf.Closeend sub


zut ! la mise en page ne fonctionne pas la balise HTML de de texte préformaté ne fonctionne pas !


On recommence avec des br ... 'Par Boris S
'Concatene ts les pgn à partir
'd'un répertoire ( récursivité )
'modifié par Pascal G


Dim fso
Dim folder
Dim Depart


'Rajout par Pascal
Dim NomBase


Set fso = CreateObject
("Scripting.FileSystemObject")


Depart=inputbox ("Entrer le répertoire de départ", "Mettre un à la fin")Set folder = fso.GetFolder(Depart)

'Rajout par Pascal
NomBase=inputbox ("Entrer le nom du fichier pour la base PGN qui va être créée", "Nom de votre base ?")

listfolders folder


'Ligne modifiée par Pascal
msgbox "Terminé" & chr(13) & NomBase +".PGN Créé"

Public Sub listfolders(f)
Dim g
'msgbox "repertoire:" & f.Name


Dim Files
Dim File


Set Files = f.Files


If Files.Count 0 Then
For Each File In Files
if fso.GetExtensionName(File.name )="pgn" then Ajoute File
Next
End If


For Each g In f.SubFolders
listfolders g
Next
End Sub


Sub Ajoute(UnFicPgn)


'Ligne modifiée par Pascal
if UnFicPgn.name = NomBase +".pgn" then exit sub
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set f = fso.OpenTextFile(UnFicPgn.path, ForReading, True)
ContenuFic=f.ReadAll
f.Close


Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(NomBase +".pgn", ForAppending , True)
f.write ContenuFic
f.Close


end sub





Merci Pascal On sent le pro pour avoir pris soin d'indiquer où tu avais modifié.
J'ai scanné tout mon disque ce matin, et pour générer un fichier de 7 megas ( j'en avais des fichiers éparpillés ! )ça à pris 4 secondes.





© 2026 - France Echecs  | Utilisation des cookies  | Politique de confidentialité