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...
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)