Question Renommer une série de fichier

Plus d'informations
il y a 12 ans 3 mois #16556 par wackou
Bonjour,
J'ai une série de fichier en .hist de cette forme :
[code:1]{B7616B3E-8825-414F-9A4F-E3A208A460BB}.hist[/code:1]
A l'intérieur, il y a une chaîne de caractère comme ceci : (pas présente dans tous les fichiers, si non présent, mettre vidéo ou autre)
[code:1]Conversation with toto[/code:1]
J'aimerais donc renommer ces fichiers de cette forme :
[code:1]Conversation_with_toto_11-12-2013.html[/code:1]

Pour cela j'ai déjà quelques choses :
[code:1]$file=Get-ChildItem -name -filter *.hist | find \"Conversation with \" * | where { $_ -ne \"$null\" }
$file -Replace \"
\",\"\"[/code:1]
Cela me renvoie une liste de cette forme :
[code:1]{DABDF07C-AA99-41E6-AE36-CCB7EB4DDC2D}.HIST
Conversation with toto
{DB370FA3-26BC-465F-80BD-847C4FF105D9}.HIST
{DDF89DFF-6462-4987-9669-6B57006D0F74}.HIST
Conversation with toto
{E2BDD72C-55D2-4CE0-8A23-8C33FE663677}.HIST
Conversation with toto
{EEDB28C3-AF82-4DF8-872B-6A3B51233397}.HIST[/code:1]
Voilà actuellement où j'en suis, j'essais maintenant de manipuler cette chaîne de caractère pour qu'elle ressemble au final à cela :
[code:1]NAME,CONV
{108310FC-BCAF-465B-A1D1-8C0F7069D1A5}.HIST,Conversation_with_toto_11-12-2013.html
{21315907-EBEA-44B9-92D7-A5CFA9D4688A}.HIST,other
{23EB7736-B50E-437E-AC76-BA8A6CD01692}.HIST,Conversation_with_toto_11-12-2013.html
{32DD15CD-1394-45E4-A403-CC6E2716F1C0}.HIST,other[/code:1]
Mais je bloque completement et j'ai besoin de votre aide :)

Pour ensuite faire :
[code:1]import-csv files_hist.csv |foreach-object {rename-item $_.NAME $_.CONV}[/code:1]
et renommer mes fichiers

Merci d'avance

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

Plus d'informations
il y a 12 ans 3 mois #16558 par Laurent Dardenne
Salut,
pourquoi utiliser un fichier csv ?

Tutoriels PowerShell

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

Plus d'informations
il y a 12 ans 3 mois #16561 par wackou
Réponse de wackou sur le sujet Re:Renommer une série de fichier
parce que je pense que c'est plus \"simple\" pour gérer mes fichiers et les renommer correctement.
Mais si vous avez une idée :)

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

Plus d'informations
il y a 12 ans 3 mois #16563 par Laurent Dardenne
wackou écrit:

parce que je pense que c'est plus \"simple\" pour gérer mes fichiers et les renommer correctement.

je supposais que c'était une liste de correspondance.

Une piste :
[code:1]
@'
test
Conversation with toto
test
'@ > 'c:\temp\{B7616B3E-8825-414F-9A4F-E3A208A460BB}.hist'

@'
test
other
test
'@ > 'c:\temp\{21315907-EBEA-44B9-92D7-A5CFA9D4688A}.HIST'

@'
test
Conversation with toto
test
'@ > 'c:\temp\{23EB7736-B50E-437E-AC76-BA8A6CD01692}.HIST'

@'
test
truc
test
'@ > 'c:\temp\{32DD15CD-1394-45E4-A403-CC6E2716F1C0}.HIST'


$SearchStr='Conversation with toto'
$SearchName=$SearchStr -replace ' ','_'
$FormatDate='{2:dd-MM-yyyy}'
$FormatName=\"{0}\{1}_$FormatDate.html\"
$Date=Get-Date

$sbChangeExt={
$FormatName -F ([System.IO.Path]::GetDirectoryName($_.Path)),$SearchName,$Date
}

Select-String -Path 'C:\Temp\*.HIST' -Pattern $SearchStr|
Rename-item -NewName $sbChangeExt -Whatif -Verbose
[/code:1]
Il est possible de construire un 'pattern de commande', vérifie déjà si cela t'aide.

Tutoriels PowerShell

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

Plus d'informations
il y a 12 ans 3 mois #16570 par wackou
Réponse de wackou sur le sujet Re:Renommer une série de fichier
En faite, je pensait plus à faire une regex qui \"match\" les \"conversations with\" et recopier la ligne à la fin de la ligne precedente

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

Plus d'informations
il y a 12 ans 3 mois #16571 par Laurent Dardenne
Une correction :
[code:1]
$SearchStr='Conversation with toto'
$SearchName=$SearchStr -replace ' ','_'
$FormatDate='{2:dd-MM-yyyy}'
$FormatName=\"{0}\{1}_$FormatDate-{3}.html\"
$Date=Get-Date

$sbChangeExt={
$FormatName -F ([System.IO.Path]::GetDirectoryName($_.Path)),$SearchName,$Date,$Count
}

$Files=Select-String -Path 'C:\Temp\*.HIST' -Pattern $SearchStr
$Count=0
$Files|Foreach {$Count++;$_}|Rename-item -NewName $sbChangeExt -Whatif -Verbose
[/code:1]
Deux pb, le premier Select-String ne libère pas le fichier courant et le second est que ta régle, en tout cas tes exemples, ne peuvent fonctionner, car il y a duplication de nom de fichier.

Tutoriels PowerShell

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

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