Question
Déplacer les fichiers avec leur arboresc. (Résolu)
- Jacques Barathon
- Hors Ligne
- Administrateur
- Messages : 576
- Remerciements reçus 0
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.
- big_cham
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 24
- Remerciements reçus 0
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...<br><br>Message édité par: big_cham, à: 7/12/07 12:51
Connexion ou Créer un compte pour participer à la conversation.
- big_cham
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 24
- Remerciements reçus 0
[code:1]#recupère l'arborescence source
$structure = get-childitem d:\taf -recurse | where-object{$_Mode -match \"d\"}
#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 + \"\\" + $ext
#Si un fichier interdit est trouvé,
if (get-childitem $extPath)
#modifier le chemin,
{$Element.PSPath = $element.PSPath -replace \"d:\",\"x:\\"
# 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 \"d:\",\"x:\\"}
}[/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 <<<< {$_.PSParentPath -replace \"p:\",\"x:\\"+$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.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
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 \"d\"}
[/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.
- big_cham
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 24
- Remerciements reçus 0
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 <<<< SPath = $element.PSPath -replace \"p:\",\"x:\\"
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 <<<< $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 <<<< -destination {$_.PSParentPath -replace \"p:\",\"x:\\"}
Je suppose que mon script a des difficultés pour trouver le chemin source.
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
- Messages : 576
- Remerciements reçus 0
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Déplacer les fichiers avec leur arboresc. (Résolu)