Question (Résolu) Supprimer les espaces entre les variables

Plus d'informations
il y a 16 ans 7 mois #5009 par BARTHE
Tout d'abord bonjour à tous,

Je m'initie au powershell avec un script de sauvegarde, ce que je souhaite c'est que robocopy soit capable d'utiliser multiple source mais aussi de me créer au niveau de la destination un nom de répertoire au nom du répertoire source.
Pour cela j'utilise (get-item $sources).Name dans une boucle For.

le problème c'est qu'entre la variable $destination et (get-item $source).Name un espace vient se loger, ce qui pour la suite avec robocopy est interprété comme un commutateur ....


exemple
[code:1]write-host $destination\(get-item $source).Name[/code:1]

[code:1]d:\dest\ org3[/code:1]

alors que je souhaite avoir comme résultat

[code:1]d:\dest\org3[/code:1]


Voici mon script en entier :silly:

[code:1]
$selection= @(\"D:\org\"
\"d:\org2\"
\"d:\org3\"«»)


$destination=\"d:\dest\"

# Recupere le nom du repertoire
#(get-item $sources).Name


foreach ($source in $selection) {
robocopy $source $destination\(get-item $source).Name
}
[/code:1]

Merci d'avance pour votre aide.

Message édité par: cyril.barthe, à: 30/07/09 18:07

Message édité par: cyril.barthe, à: 30/07/09 18:08

Message édité par: cyril.barthe, à: 30/07/09 18:19<br><br>Message édité par: Arnaud, à: 17/08/09 16:37

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

Plus d'informations
il y a 16 ans 7 mois #5010 par BARTHE
Résolu en trouvant sur le forum une explication

powershell-scripting.com/index.php?optio...id=3234&catid=14

Usage d'une variable au sein d'une string, elle sera expansée, c'est à dire que PS reconstruit la chaîne finale, les parenthèses indique d'interpréter ce sous ensemble avant le reste, un appel de fonction en quelque sorte et le dollar indique qu'on récupère une chaine de caractères :
Code:

[code:1]$Batch.FullPath=\&quot;$($Batch.Drive):\$($Batch.Path)\$($Batch.Name)\&quot; #ou une méthode
[/code:1]


Merci Laurent Dardenne !

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

Plus d'informations
il y a 16 ans 7 mois #5011 par BARTHE
Par contre cette solution est fonctionnelle qu'avec la version Windows PowerShell 2.0 CTP.

Donc si il ya une autre solution avec powershell V1 je suis preneur :whistle:

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

Plus d'informations
il y a 16 ans 7 mois #5021 par fabien
Tu stocks le résultat dans une petite variable puis tu fais un replace :

$varstring.replace(\&quot; \&quot;,\&quot;\&quot;)

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

Plus d'informations
il y a 16 ans 7 mois #5034 par BARTHE
Phebus écrit:

Tu stocks le résultat dans une petite variable puis tu fais un replace :

$varstring.replace(\&quot; \&quot;,\&quot;\&quot;)


Merci pour ta réponse
Pas bête sauf pour les répertoires du genre \&quot;Mes Documents\&quot; ou cela risque de poser problème.
:)

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

Plus d'informations
il y a 16 ans 7 mois #5036 par fabien
Judicieuse remarque :)

Je vais faire mieux alors :

write-host $destination\((get-item $source).Name).trim()

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

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