Question
[RESOLU] Test-path bad resultat si caracteres spex
- Gabriel
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 10 ans 9 mois #20565
par Gabriel
[RESOLU] Test-path bad resultat si caracteres spex a été créé par Gabriel
bonsoir
test-path réagis bizarrement avec les caractères spéciaux quand ils sont stocké dans une variable. Là il s'agit de \"(\" et \")\"
si on met la chaine de caractères a tester dans une variable, on sort \"False\"
[code:1]
$NouveauChemin = \"F:\posh-mp3Rename\Podcast\Beach Party(Georges Lang)\Beach Party_(2015-07-08).mp3\"
PS F:\>Test-Path -LiteralPath $NouveauChemin
False
[/code:1]
si on test la chaine de caractere directement il sort \"True\"
[code:1]
PS F:\>Test-Path -LiteralPath \"F:\posh-mp3Rename\Podcast\Beach Party(Georges Lang)\Beach Party_(2015-07-08).mp3\"
True
[/code:1]
une suggestion?<br><br>Message édité par: tonic8, à: 2/08/15 10:39
test-path réagis bizarrement avec les caractères spéciaux quand ils sont stocké dans une variable. Là il s'agit de \"(\" et \")\"
si on met la chaine de caractères a tester dans une variable, on sort \"False\"
[code:1]
$NouveauChemin = \"F:\posh-mp3Rename\Podcast\Beach Party(Georges Lang)\Beach Party_(2015-07-08).mp3\"
PS F:\>Test-Path -LiteralPath $NouveauChemin
False
[/code:1]
si on test la chaine de caractere directement il sort \"True\"
[code:1]
PS F:\>Test-Path -LiteralPath \"F:\posh-mp3Rename\Podcast\Beach Party(Georges Lang)\Beach Party_(2015-07-08).mp3\"
True
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 10 ans 9 mois #20566
par Gabriel
Réponse de Gabriel sur le sujet Re:Test-path mauvais resultat si caracteres speciaux
bon j'ai trouvé (enfin presque)
dans mon script j'ai mis
[code:1]
$NouveauChemin = '\"' + (join-path $destination $nouveauNomfichier) + '\"'
Test-Path -LiteralPath $NouveauChemin
False
Test-Path -LiteralPath \"F:\posh-mp3Rename\Podcast\Beach Party(Georges Lang)\Beach Party_(2015-07-08).mp3\"
True
[/code:1]
là ça marche:
[code:1]
$NouveauChemin = join-path $destination $nouveauNomfichier
Test-Path -LiteralPath $NouveauChemin
True
[/code:1]
dans mon script j'ai mis
[code:1]
$NouveauChemin = '\"' + (join-path $destination $nouveauNomfichier) + '\"'
Test-Path -LiteralPath $NouveauChemin
False
Test-Path -LiteralPath \"F:\posh-mp3Rename\Podcast\Beach Party(Georges Lang)\Beach Party_(2015-07-08).mp3\"
True
[/code:1]
là ça marche:
[code:1]
$NouveauChemin = join-path $destination $nouveauNomfichier
Test-Path -LiteralPath $NouveauChemin
True
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 10 ans 9 mois #20618
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Test-path mauvais resultat si caracteres speciaux
Salut,
tonic8 écrit:
Les guillemets étant autorisés dans un nom de fichier, le cmdlet recherche donc un nom de fichier valide qui n'existe pas.
Une question à placer dans un quizz
tonic8 écrit:
Les délimiteurs de string ne sont nécessaire qu'en mode expression, par exemple lors de la définition d'une valeur de paramètre.bon j'ai trouvé (enfin presque)
Les guillemets étant autorisés dans un nom de fichier, le cmdlet recherche donc un nom de fichier valide qui n'existe pas.
Une question à placer dans un quizz
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 10 ans 9 mois #20619
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Test-path mauvais resultat si caracteres speciaux
Salut,
Laurent Dardenne écrit:
Les simples quottes sont autorisées, mais pas les doubles.
Naming Files, Paths, and Namespaces
Je comprends qu'elles sont autorisées dans la valeur du paramètre. Il faut avouer que c'est un peu 'capilo tracté'
[code:1]
PS>$destination = \"D:\Tools\"
PS>$NomFichier = \"putty.exe\"
PS>Join-Path $destination $NomFichier
D:\Tools\putty.exe
PS>Test-Path -LiteralPath (Join-Path $destination $NomFichier)
True
PS>$a = Join-Path $destination $NomFichier
PS>Test-Path -LiteralPath $a
True
PS>Test-Path -LiteralPath \"$a\"
True
PS>$a = '\"' + (Join-Path $destination $NomFichier) + '\"'
PS>$a
\"D:\Tools\putty.exe\"
PS>Test-Path -LiteralPath $a
False
[/code:1]
Les doubles quottes faisant parties de l'objet sont prises en comptes dans le chemin de fichier à tester par le Cmdlet, alors que ce caractère est réservé et n'est pas autorisé sur le système de fichier.
Faut-il tester la présence de caractères réservés dans la chaîne avant de la passer au Cmdlet Test-Path ? => Fais le toi même !
Message édité par: Matthew BETTON, à: 12/08/15 11:07<br><br>Message édité par: Matthew BETTON, à: 12/08/15 11:11
Laurent Dardenne écrit:
Salut,
tonic8 écrit:bon j'ai trouvé (enfin presque)
Les guillemets étant autorisés dans un nom de fichier
Les simples quottes sont autorisées, mais pas les doubles.
Naming Files, Paths, and Namespaces
Je comprends qu'elles sont autorisées dans la valeur du paramètre. Il faut avouer que c'est un peu 'capilo tracté'
[code:1]
PS>$destination = \"D:\Tools\"
PS>$NomFichier = \"putty.exe\"
PS>Join-Path $destination $NomFichier
D:\Tools\putty.exe
PS>Test-Path -LiteralPath (Join-Path $destination $NomFichier)
True
PS>$a = Join-Path $destination $NomFichier
PS>Test-Path -LiteralPath $a
True
PS>Test-Path -LiteralPath \"$a\"
True
PS>$a = '\"' + (Join-Path $destination $NomFichier) + '\"'
PS>$a
\"D:\Tools\putty.exe\"
PS>Test-Path -LiteralPath $a
False
[/code:1]
Les doubles quottes faisant parties de l'objet sont prises en comptes dans le chemin de fichier à tester par le Cmdlet, alors que ce caractère est réservé et n'est pas autorisé sur le système de fichier.
Faut-il tester la présence de caractères réservés dans la chaîne avant de la passer au Cmdlet Test-Path ? => Fais le toi même !
Message édité par: Matthew BETTON, à: 12/08/15 11:07<br><br>Message édité par: Matthew BETTON, à: 12/08/15 11:11
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 10 ans 9 mois #20626
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Test-path mauvais resultat si caracteres speciaux
Salut Matthew,
Matthew BETTON écrit:
Matthew BETTON écrit:
Il y a donc deux analyses et de quoi se mélanger les crayons
Matthew BETTON écrit:
Le pb ici est d'obtenir deux infos, si le chemin est valide ET s'il existe, mais le cmdlet ne le permet pas.
D'où la fonction proposée dans ce tuto .
Une raison de plus pour la placer dans un quizz
Matthew BETTON écrit:
Oui, tu as raison.Les simples quottes sont autorisées, mais pas les doubles.
Matthew BETTON écrit:
Sur la ligne de commande c'est encore une valeur de paramètre qui est analysée par le parseur, ensuite c'est le provider qui valide le nom de chemin. Et ici cela dépend aussi de localisation courante.Je comprends qu'elles sont autorisées dans la valeur du paramètre
Il y a donc deux analyses et de quoi se mélanger les crayons
Matthew BETTON écrit:
Cf. -isValidFais le toi même !
Le pb ici est d'obtenir deux infos, si le chemin est valide ET s'il existe, mais le cmdlet ne le permet pas.
D'où la fonction proposée dans ce tuto .
Une raison de plus pour la placer dans un quizz
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 10 ans 9 mois #20627
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Test-path mauvais resultat si caracteres speciaux
Laurent Dardenne écrit:
Il me semblait bien qu'on avait déjà échangé sur ce sujet
Oui
Cf. -isValid
Il me semblait bien qu'on avait déjà échangé sur ce sujet
Une raison de plus pour la placer dans un quizz
Oui
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [RESOLU] Test-path bad resultat si caracteres spex