Question [Fonction] Décomposer un nom de fichier
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 11 ans 1 mois #12972
par Laurent Dardenne
Tutoriels PowerShell
[Fonction] Décomposer un nom de fichier a été créé par Laurent Dardenne
Voici une fonction décomposant un nom de fichier en plusieurs parties :
[code:1]
function Get-SplitedPath {
# Construit un objet contenant les parties d'un nom de fichier
param ($FileName)
$PathRoot=[System.IO.Path]::GetPathRoot($FileName);
$Directory=[System.IO.Path]::GetDirectoryName($FileName);
$Fn=[System.IO.Path]::GetFileName($FileName)
$Extension=[System.IO.Path]::GetExtension($Fn);
$FNnoExtension=[System.IO.Path]::GetFileNameWithoutExtension($Fn)
$object=new-object PSobject -Property @{
PathRoot=$PathRoot
Directory=$Directory;
Drive=$PathRoot[0];
FileName=$Fn;
Extension=$Extension;
FileNameWithoutExtension=$FNnoExtension
}
$object.PsObject.TypeNames.Insert(0,\"SliptedPath\"«»)
$object
}# Get-SplitedPath
function New-FileNameTimeStamped{
param($FileName,$Date=(Get-Date),$Format='dd-MM-yyyy-HH-mm-ss')
$SP=Get-SplitedPath $FileName
\"{0}\{1}-{2:$Format}{3}\" -F $SP.Directory,$SP.FileNameWithoutExtension,$Date,$SP.Extension
}#New-FileNameTimeStamped
[/code:1]
Un exemple :
[code:1]
Get-SplitedPath 'C:\Temp\Traitement.log'
# Drive : C
# Directory : C:\Temp
# Extension : .log
# FileName : Traitement.log
# PathRoot : C:\
# FileNameWithoutExtension : Traitement
New-FileNameTimeStamped 'C:\Temp\Traitement.log'
# C:\Temp\Traitement-24-10-2012-15-02-25.log
[/code:1]
[code:1]
function Get-SplitedPath {
# Construit un objet contenant les parties d'un nom de fichier
param ($FileName)
$PathRoot=[System.IO.Path]::GetPathRoot($FileName);
$Directory=[System.IO.Path]::GetDirectoryName($FileName);
$Fn=[System.IO.Path]::GetFileName($FileName)
$Extension=[System.IO.Path]::GetExtension($Fn);
$FNnoExtension=[System.IO.Path]::GetFileNameWithoutExtension($Fn)
$object=new-object PSobject -Property @{
PathRoot=$PathRoot
Directory=$Directory;
Drive=$PathRoot[0];
FileName=$Fn;
Extension=$Extension;
FileNameWithoutExtension=$FNnoExtension
}
$object.PsObject.TypeNames.Insert(0,\"SliptedPath\"«»)
$object
}# Get-SplitedPath
function New-FileNameTimeStamped{
param($FileName,$Date=(Get-Date),$Format='dd-MM-yyyy-HH-mm-ss')
$SP=Get-SplitedPath $FileName
\"{0}\{1}-{2:$Format}{3}\" -F $SP.Directory,$SP.FileNameWithoutExtension,$Date,$SP.Extension
}#New-FileNameTimeStamped
[/code:1]
Un exemple :
[code:1]
Get-SplitedPath 'C:\Temp\Traitement.log'
# Drive : C
# Directory : C:\Temp
# Extension : .log
# FileName : Traitement.log
# PathRoot : C:\
# FileNameWithoutExtension : Traitement
New-FileNameTimeStamped 'C:\Temp\Traitement.log'
# C:\Temp\Traitement-24-10-2012-15-02-25.log
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 11 ans 1 mois #12973
par SiSMik
Réponse de SiSMik sur le sujet Re:[Fonction] Décomposer un nom de fichier
Salut,
ça va être utile bien à bien des personnes.
Merci
ça va être utile bien à bien des personnes.
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 530
- Remerciements reçus 0
il y a 11 ans 1 mois #12977
par Richard Lazaro
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Réponse de Richard Lazaro sur le sujet Re:[Fonction] Décomposer un nom de fichier
Hello,
Pour la première fonction, je trouve qu'elle fait appelle à beaucoup de chose peut être pour rien ?
Toutes les infos (hormis le Drive et PathRoot) sont retournées via la cmdlet Get-Item.
Bien Cordialement,
Richard Lazaro.
Pour la première fonction, je trouve qu'elle fait appelle à beaucoup de chose peut être pour rien ?
Toutes les infos (hormis le Drive et PathRoot) sont retournées via la cmdlet Get-Item.
Bien Cordialement,
Richard Lazaro.
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 11 ans 1 mois #12978
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[Fonction] Décomposer un nom de fichier
Salut Richard
Richard Lazaro écrit:
Par exemple si je veux créer un fichier de log et lui associer un timestamp, Get-item ne fonctionne pas et Split-Path demande plusieurs appels, à moins de créer un proxy.
Tout compte fait, je n'aurais pas dû me focaliser sur le mot Path, mais File
:
[code:1]
$F=New-object System.IO.FileInfo 'C:\Temp\Traitement.log'
[/code:1]
Un effet de bord de l'usage de la convention Verbe-Nom...
Richard Lazaro écrit:
[edit]
Coquille
[/edit]<br><br>Message édité par: Laurent Dardenne, à: 27/10/12 13:30
Richard Lazaro écrit:
Pour Get-item tu as raison, son seul pb est que le fichier doit exister, car il s'adresse au provider FS.Toutes les infos (hormis le Drive et PathRoot) sont retournées via la cmdlet Get-Item.
Par exemple si je veux créer un fichier de log et lui associer un timestamp, Get-item ne fonctionne pas et Split-Path demande plusieurs appels, à moins de créer un proxy.
Tout compte fait, je n'aurais pas dû me focaliser sur le mot Path, mais File

[code:1]
$F=New-object System.IO.FileInfo 'C:\Temp\Traitement.log'
[/code:1]
Un effet de bord de l'usage de la convention Verbe-Nom...
Richard Lazaro écrit:
En utilisant la seconde approche, je dirais ouiPour la première fonction, je trouve qu'elle fait appelle à beaucoup de chose peut être pour rien ?

[edit]
Coquille
[/edit]<br><br>Message édité par: Laurent Dardenne, à: 27/10/12 13:30
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 11 ans 1 mois #12979
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[Fonction] Décomposer un nom de fichier
Du coup un petit peu de refactoring, on supprime la première fonction et on modifie la seconde :
[code:1]
function New-FileNameTimeStamped{
param($FileName,$Date=(Get-Date),$Format='dd-MM-yyyy-HH-mm-ss')
$SF=New-object System.IO.FileInfo $FileName
\"{0}\{1}-{2:$Format}{3}\" -F $SF.Directory,$SF.BaseName,$Date,$SF.Extension
}#New-FileNameTimeStamped
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 27/10/12 13:31
[code:1]
function New-FileNameTimeStamped{
param($FileName,$Date=(Get-Date),$Format='dd-MM-yyyy-HH-mm-ss')
$SF=New-object System.IO.FileInfo $FileName
\"{0}\{1}-{2:$Format}{3}\" -F $SF.Directory,$SF.BaseName,$Date,$SF.Extension
}#New-FileNameTimeStamped
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 27/10/12 13:31
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.076 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- [Fonction] Décomposer un nom de fichier