Question Déplacer les fichiers avec leur arboresc. (Résolu)

Plus d'informations
il y a 16 ans 3 mois #1337 par Jacques Barathon
Ok, donc à priori le code que tu as cité doit marcher, non?

Le travail est plus simple que dans l'exemple que je fournissais, puisque tu appliques toujours le même schéma de déplacement (de D:\ vers D:\TAF\scripts\powershell\move), ce qui te permet d'effectuer le remplacement du chemin sans avoir à passer par une variable ou un champ supplémentaire.

Pour le reste, ton script fait un travail identique au mien, à ceci près qu'il utilise get-item au lieu de get-childitem et qu'il utilise -literalpath à la place de -path.

Janel

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

Plus d'informations
il y a 16 ans 3 mois #1339 par big_cham
Bon ma solution n'est pas concluante.

Je pense ne plus travailler avec le fichier mais directement avec les extensions.

Alors le fichier contiendrait une liste d'extensions et non plus la liste des fichiers à déplacer.

J'ai listé les tâches :
  • Lire le fichier : extensions.txt
  • Rechercher les fichiers pour chaque extension
  • Créer l'arborescence sur le répertoire de destination
  • Déplacer les données

Vous voyez ca comment ? A priori, je pense qu'il faut pour chaque extension listée, faire une recherche récursive dans le dossier et procéder au déplacement.

J'avoue être un peu aux fraises...:blush:<br><br>Message édité par: big_cham, à: 7/12/07 12:51

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

Plus d'informations
il y a 16 ans 3 mois #1342 par big_cham
Voilà ou j'en suis...

[code:1]#recupère l'arborescence source
$structure = get-childitem d:\taf -recurse | where-object{$_Mode -match \&quot;d\&quot;}

#parcours du fichier contenant les extensions
foreach ($ext in get-content D:\TAF\scripts\powershell\Move\ext-interdites.txt)

#Parcours l'arborescence source pour trouver les fichiers dont les extensions sont dans le fichier ci-dessus
{foreach ($fichier in $structure)
{$extPath = $Element.PSPath + \&quot;\\&quot; + $ext
#Si un fichier interdit est trouvé,
if (get-childitem $extPath)
#modifier le chemin,
{$Element.PSPath = $element.PSPath -replace \&quot;d:\&quot;,\&quot;x:\\&quot;
# et créer l'arborescence dans le repértoire de destination
new-item $Element.PsPath -type directory -ea SilentlyContinue
}
}
#Parcours du dossier, recherche de l'extension interdite et déplacement du fichier
get-childitem d:\ -recurse -include $ext |
move-item -destination {$_.PSParentPath -replace \&quot;d:\&quot;,\&quot;x:\\&quot;}
}[/code:1]

J'obtiens cette erreur :

Move-Item : L'entrée du paramètre « Destination » vers le bloc de script a échoué. L'opérateur -replace autorise unique
ment 2 éléments du côté droit, et non 3.
Au niveau de D:\TAF\scripts\powershell\Move\move_mp3.ps1 : 13 Caractère : 23
+ move-item -destination &lt;&lt;&lt;&lt; {$_.PSParentPath -replace \&quot;p:\&quot;,\&quot;x:\\&quot;+$Element.PsPath}


Ca coince au niveau du déplacement...<br><br>Message édité par: big_cham, à: 7/12/07 15:15

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

Plus d'informations
il y a 16 ans 3 mois #1343 par Arnaud Petitjean
Hello,

Ton problème vient tout simplement de ta 2e ligne où tu as oublié un point entre $_ et Mode :

[code:1] #recupère l'arborescence source
$structure = get-childitem d:\taf -recurse | where-object{$_.Mode -match \&quot;d\&quot;}
[/code:1]

Et comme ton filtre ne marche pas, tu as une erreur plus loin.

Bon week end,

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 16 ans 3 mois #1347 par big_cham
Me revoilà...

Après avoir fait la modification, j'obtiens cette erreur :

La propriété « PSPath » est introuvable sur cet objet ; assurez-vous qu'elle existe et qu'elle peut être défin
Au niveau de D:\TAF\scripts\powershell\Move\move_mp3.ps1 : 13 Caractère : 27
+ {$Element.P &lt;&lt;&lt;&lt; SPath = $element.PSPath -replace \&quot;p:\&quot;,\&quot;x:\\&quot;


puis

New-Item : Impossible de lier l'argument au paramètre « Path », car il a la valeur Null.
Au niveau de D:\TAF\scripts\powershell\Move\move_mp3.ps1 : 15 Caractère : 25
+ new-item &lt;&lt;&lt;&lt; $Element.PsPath -type directory -ea SilentlyContinue


pour finir par

Move-Item : Could not find a part of the path.
Au niveau de D:\TAF\scripts\powershell\Move\move_mp3.ps1 : 20 Caractère : 10
+ move-item &lt;&lt;&lt;&lt; -destination {$_.PSParentPath -replace \&quot;p:\&quot;,\&quot;x:\\&quot;}


Je suppose que mon script a des difficultés pour trouver le chemin source.

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

Plus d'informations
il y a 16 ans 3 mois #1348 par Jacques Barathon
Je n'ai pas le temps de tester ton script pour l'instant, mais rapidement je remarque que ta variable $element n'est affectée nulle part. Ne voulais-tu pas utiliser $fichier plutôt?

Janel

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

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