Question [RESOLU] Test-path bad resultat si caracteres spex

Plus d'informations
il y a 10 ans 9 mois #20565 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

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

Plus d'informations
il y a 10 ans 9 mois #20566 par Gabriel
bon j'ai trouvé (enfin presque)

dans mon script j'ai mis
[code:1]
$NouveauChemin = '\&quot;' + (join-path $destination $nouveauNomfichier) + '\&quot;'

Test-Path -LiteralPath $NouveauChemin
False
Test-Path -LiteralPath \&quot;F:\posh-mp3Rename\Podcast\Beach Party(Georges Lang)\Beach Party_(2015-07-08).mp3\&quot;
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.

Plus d'informations
il y a 10 ans 9 mois #20618 par xyz
Salut,
tonic8 écrit:

bon j'ai trouvé (enfin presque)

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.

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.

Plus d'informations
il y a 10 ans 9 mois #20619 par Matthew BETTON
Salut,

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&gt;$destination = \&quot;D:\Tools\&quot;
PS&gt;$NomFichier = \&quot;putty.exe\&quot;
PS&gt;Join-Path $destination $NomFichier
D:\Tools\putty.exe

PS&gt;Test-Path -LiteralPath (Join-Path $destination $NomFichier)
True

PS&gt;$a = Join-Path $destination $NomFichier
PS&gt;Test-Path -LiteralPath $a
True

PS&gt;Test-Path -LiteralPath \&quot;$a\&quot;
True

PS&gt;$a = '\&quot;' + (Join-Path $destination $NomFichier) + '\&quot;'
PS&gt;$a
\&quot;D:\Tools\putty.exe\&quot;

PS&gt;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 ? =&gt; Fais le toi même ! :p

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.

Plus d'informations
il y a 10 ans 9 mois #20626 par xyz
Salut Matthew,
Matthew BETTON écrit:

Les simples quottes sont autorisées, mais pas les doubles.

Oui, tu as raison.
Matthew BETTON écrit:

Je comprends qu'elles sont autorisées dans la valeur du paramètre

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.
Il y a donc deux analyses et de quoi se mélanger les crayons ;-)
Matthew BETTON écrit:

Fais le toi même !

Cf. -isValid
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 :P

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 9 mois #20627 par Matthew BETTON
Laurent Dardenne écrit:

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 :P


Oui :P

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

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