Question comparer les nom des fichiers d'un repertoire

Plus d'informations
il y a 13 ans 7 mois #12905 par darphboubou
Bonjour,

Voila suite a un script j’obtiens plusieurs fichiers csv regroupé dans un folder

ensuite j'aimerai merger les fichiers csv mais seulement ceux qui on une partit du nom en commun

dans le folder c:\toto\csv

j'ai les csv suivant
toto.csv
toto pri.csv
tata.csv
tata.pri.csv

le code ci dessous me permet de concaténer tous les csv du folder

or je veux concaténer toto.csv avec toto pri.csv et idem pour tata


Quelqu'un peux t-il m'aider (les fichiers csv on la même structure)


$CsvFiles = Get-ChildItem -Path \"c:\toto\csv\*.csv\"
# Conteneur pour le contenu des fichiers csv
$Content = @()

# Traiter chaque fichier
foreach ($csv in $csvFiles) {
$Content+=Import-Csv $csv
}


$Content | Export-Csv \"c:\toto\merge\$nomGrp.csv\"

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 7 mois #12906 par xyz
Salut,
de ce que j'ai compris, une probable solution :

$Toto=@(
'toto.csv',
'toto pri.csv'
)
$Tata=@(
'tata.csv',
'tata.pri.csv'
)
#schématiquement
$Toto|Import-csv|Export-CSV LesTotos.csv
$Tata|Import-csv|Export-CSV LesTatas.csv

Je te laisse factoriser :)

Je ne connais pas ton traitement, mais j'ai comme l'impression que ton problème est plutot liè à la conception d'origine :
darphboubou écrit:

Voila suite a un script j’obtiens plusieurs fichiers csv regroupé dans un folder

darphboubou écrit:

(les fichiers csv ont la même structure)

Je ne rencontre pas ce type de pb, car dans mes traitements je gére une ou des collections, et à partir de ces collections je génére un ou des fichiers structurés.
Bref, dans ta demande il y a un truc qui m'échappe.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 7 mois #12910 par darphboubou
hello,

en gros j'ai deux domaine.

donc quand je fais un extract des groupes d'accès, je trouve des nom de groupe de ce genre


sur domaine net
papa.net -> le groupe AD se nomme du coup grp-papa_rw
papa-fils.net -> le groupe AD se nomme du grp-coup-fils_rw
papa-fils-petit.net -> le groupe AD se nomme du grp-coup-fils-petit_rw

sur domaine pri
papa.pri -> le groupe AD se nomme du coup grp-papa_rw
papa-fils.pri -> le groupe AD se nomme du grp-coup-fils_rw
papa-fils-petit.pri -> le groupe AD se nomme du grp-coup-fils-petit_rw

Donc apres une moulinette dans mon script.
J'obtiens un fichier csv pour chaques groupe sur les different domaines

grp-papa_rw.csv
grp-coup-fils_rw.csv
grp-coup-fils-petit_rw.csv

et

grp-papa_rw-pri.csv
grp-coup-fils_rw-pri.csv
grp-coup-fils-petit_rw-pri.csv

c'est fichier csv sont regroupé dans un folder nommé csv.


j'aimerai donc fusionner

grp-papa_rw.csv avec grp-papa_rw-pri.csv

grp-coup-fils_rw.csv avec grp-coup-fils_rw-pri.csv

or pour le moment tout mes fichier contenu dans le folder CSV sont fusionner en un seul

en gros j'aimerai trier par nom

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 7 mois #12911 par xyz
darphboubou écrit:

en gros j'aimerai trier par nom

Tu veux dire regrouper par nom, dans ce cas il faut une régle de regoupement associé au code de mon premier post.

De mon côté j'utilise ce type d'approche, en ayant au préalable constitué une seule collection d'objets sur lesquels j'ajoute différentes propriétés utilisées par les filtres :
[code:1]
# Fichier de logs des différents traitements
# Nom de fichier et filtre des objets concernés
$Logs=@{
# le filtre est un scriptblock à associer au cmdlet Where-Object
Pere=@{Name=\"grp-papa_rw\";Filtre={ $_.GroupName -match 'papa\.(Net|Pri)'} };
Fils=@{Name=\"grp-coup-fils_rw\";Filtre={ $_.GroupName -match 'papa-fils\.(Net|Pri)'}};
PetiFils=@{Name=\"grp-coup-fils-petit_rw\";Filtre={$_.GroupName -match 'papa-fils-petit\.(Net|Pri)'}}
};

$Logs.GetEnumerator()|
Foreach-Object{
$Key=$_.Name
Write-Host \"Traite $Key\"
$_} |
Foreach-Object{
$_.Value|
Foreach {
$Fname=$_.Name
$Filtre=$_.Filtre
Write-Host (\"`tNom de fichier {0} ,filtre à appliquer '{1}'\" -F $FName,$Filtre)

# $GlobalDatasCollection|
# Where-Object $Filtre|
# Export-CSV $FName -Delimiter \";\" -NoTypeInformation
}
}
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 13/10/12 14:43

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.039 secondes
Propulsé par Kunena