Question [Fonction]Validation de nom de fichier
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 11 ans 11 mois #11838
par Laurent Dardenne
Tutoriels PowerShell
[Fonction]Validation de nom de fichier a été créé par Laurent Dardenne
Voici deux fonctions de validation de nom de fichier :
[code:1]
Function Test-InvalidFileNameChars{
#Test si un caractère est autorisé dans un nom de fichier
param ([char] $C)
#On n'autorise pas la saisie de caractères interdits dans un nom de fichier.
$Pattern = \"[{0}]\" -f ([Regex]::Escape([String] [System.IO.Path]::GetInvalidFileNameChars() ))
Return -Not ($_.KeyChar -Match $Pattern)
#\"Le caractère '$($matches[0])' est interdit dans un nom de fichier.\"
}
function Test-ValidFileName{
#Test un nom de fichier n'est pas un nom de device ou un chemin relatif
param( $FileName)
$Pattern =\"^(PRN|AUX|CLOCK\`$|NUL|CON|COM\d|LPT\d|\..*)$\"
Return -not ($FileName -Match $Pattern)
#\"Le nom de fichier '$FName' est interdit, car c'est soit un chemin relatif soit un nom de device réservé (Prn, Aux,Nul,...).\"
}
[/code:1]
A utiliser le plus souvent lors d'une saisie (read-host ou avec un composant GUI).
Voir aussi les autres membres de la classe Path :
[code:1]
[System.IO.Path].GetMembers()|select name
[/code:1]
[code:1]
Function Test-InvalidFileNameChars{
#Test si un caractère est autorisé dans un nom de fichier
param ([char] $C)
#On n'autorise pas la saisie de caractères interdits dans un nom de fichier.
$Pattern = \"[{0}]\" -f ([Regex]::Escape([String] [System.IO.Path]::GetInvalidFileNameChars() ))
Return -Not ($_.KeyChar -Match $Pattern)
#\"Le caractère '$($matches[0])' est interdit dans un nom de fichier.\"
}
function Test-ValidFileName{
#Test un nom de fichier n'est pas un nom de device ou un chemin relatif
param( $FileName)
$Pattern =\"^(PRN|AUX|CLOCK\`$|NUL|CON|COM\d|LPT\d|\..*)$\"
Return -not ($FileName -Match $Pattern)
#\"Le nom de fichier '$FName' est interdit, car c'est soit un chemin relatif soit un nom de device réservé (Prn, Aux,Nul,...).\"
}
[/code:1]
A utiliser le plus souvent lors d'une saisie (read-host ou avec un composant GUI).
Voir aussi les autres membres de la classe Path :
[code:1]
[System.IO.Path].GetMembers()|select name
[/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 10 mois #11856
par SiSMik
Réponse de SiSMik sur le sujet Re:[Fonction]Validation de nom de fichier
Merci pour la découverte de cette classe.
ça serait cool de pouvoir intégrer ces tests directement dans la déclaration des paramètres de fonctions/scripts.
[code:1]Function Test-InvalidFileNameChars{
#Test si un caractère est autorisé dans un nom de fichier
param ([char] $C)
#On n'autorise pas la saisie de caractères interdits dans un nom de fichier.
$Pattern = \"[{0}]\" -f ([Regex]::Escape([String] [System.IO.Path]::GetInvalidFileNameChars() ))
Return -Not ($_.KeyChar -Match $Pattern)
#\"Le caractère '$($matches[0])' est interdit dans un nom de fichier.\"
}
function blahblah {
param( [Parameter(Position=0,Mandatory=$false,ValueFromPipeline=$true)]
[ValidateScript({Test-InvalidFileNameChars $_ })]
[Xml]$XMLFile
)
[...]
}[/code:1]
Je vais tester ça quand j'aurais un peu de temps <br><br>Message édité par: benduru, à: 22/05/12 23:27
ça serait cool de pouvoir intégrer ces tests directement dans la déclaration des paramètres de fonctions/scripts.
[code:1]Function Test-InvalidFileNameChars{
#Test si un caractère est autorisé dans un nom de fichier
param ([char] $C)
#On n'autorise pas la saisie de caractères interdits dans un nom de fichier.
$Pattern = \"[{0}]\" -f ([Regex]::Escape([String] [System.IO.Path]::GetInvalidFileNameChars() ))
Return -Not ($_.KeyChar -Match $Pattern)
#\"Le caractère '$($matches[0])' est interdit dans un nom de fichier.\"
}
function blahblah {
param( [Parameter(Position=0,Mandatory=$false,ValueFromPipeline=$true)]
[ValidateScript({Test-InvalidFileNameChars $_ })]
[Xml]$XMLFile
)
[...]
}[/code:1]
Je vais tester ça quand j'aurais un peu de temps <br><br>Message édité par: benduru, à: 22/05/12 23:27
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 : 6302
- Remerciements reçus 68
il y a 11 ans 10 mois #11861
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[Fonction]Validation de nom de fichier
benduru écrit:
Le post cité ne contient pas la dernière version du module, je la poste dés que je peux.
Soit tu crées une classe C# d'attribut de validation soit tu utilises une approche basée sur une fonction ou un module , dans tout les cas il te faudra charger la solution choisie en tant que prérequis.ça serait cool de pouvoir intégrer ces tests directement dans la déclaration des paramètres de fonctions/scripts.
Le post cité ne contient pas la dernière version du module, je la poste dés que je peux.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.068 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Contributions à la communauté
- [Fonction]Validation de nom de fichier