Question
Problème avec Move-Item
- David
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 13 ans 6 mois #7758
par David
Réponse de David sur le sujet Re:Problème avec Move-Item
Mais comme je débute et que j'ai compris qu'avec le Move-item j'aurais du mal...
J'ai totalement changé la façon de procéder.
Je fais un copier de tout les éléments(selon la date).Ensuite je supprime tout les éléments sans les répertoires.
J'ai totalement changé la façon de procéder.
Je fais un copier de tout les éléments(selon la date).Ensuite je supprime tout les éléments sans les répertoires.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 13 ans 6 mois #7772
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème avec Move-Item
sarlin écrit:
Aprés qq essais, voici une possible solution :
[code:1]
$Destination=\"C:\Users\david\Desktop\test2\"
$Origine=\"???\"
cd $Origine
Get-Childitem -recurse |
Where {!$_.PSIsContainer -and {$_.LastWriteTime -gt '08/30/2010'}} |
Foreach {
$CurrentFile=$_.FullName
$NewFile=$CurrentFile -replace ([regex]::Escape($Origine)),$Destination
$TargetDir=Split-Path $NewFile -Parent
write-debug \"`r`n$CurrentFile`r`n$NewFile`r`n$TargetDir\"
$null=New-Item $TargetDir -type directory -ea SilentlyContinue
Move-item $CurrentFile -Force -Destination $TargetDir
}
[/code:1]
Reste à savoir si tu veux ou pas recopier l'arborescence, c'est le cas avec ce code.<br><br>Message édité par: Laurent Dardenne, à: 13/09/10 16:39
Tu n'es pas le seulj'ai compris qu'avec le Move-item j'aurais du mal...
Aprés qq essais, voici une possible solution :
[code:1]
$Destination=\"C:\Users\david\Desktop\test2\"
$Origine=\"???\"
cd $Origine
Get-Childitem -recurse |
Where {!$_.PSIsContainer -and {$_.LastWriteTime -gt '08/30/2010'}} |
Foreach {
$CurrentFile=$_.FullName
$NewFile=$CurrentFile -replace ([regex]::Escape($Origine)),$Destination
$TargetDir=Split-Path $NewFile -Parent
write-debug \"`r`n$CurrentFile`r`n$NewFile`r`n$TargetDir\"
$null=New-Item $TargetDir -type directory -ea SilentlyContinue
Move-item $CurrentFile -Force -Destination $TargetDir
}
[/code:1]
Reste à savoir si tu veux ou pas recopier l'arborescence, c'est le cas avec ce code.<br><br>Message édité par: Laurent Dardenne, à: 13/09/10 16:39
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- David
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 13 ans 6 mois #7773
par David
Réponse de David sur le sujet Re:Problème avec Move-Item
Merci beaucoup!!!
C'est testé et approuvé!
Maintenant je vais chercher le comment tu as fait^^<br><br>Message édité par: sarlin, à: 13/09/10 17:17
C'est testé et approuvé!
Maintenant je vais chercher le comment tu as fait^^<br><br>Message édité par: sarlin, à: 13/09/10 17:17
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 13 ans 6 mois #7777
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème avec Move-Item
sarlin écrit:
Laurent Dardenne écrit:
sarlin écrit:
Ton traitement ressemble à un XCopy, j'ai donc cherché sur le net qq exemples, certes peu probant, mais les premiers liens renvoyés par google portent, si je puis dire, un regarde critique à propos des cmdlets liés au provider FileSystem.
Ton approche autour de Copy-item porte un début de solution, car que ce soit avec move ou copy la présence du répertoire cible semble modifier le comportement de ces cmdlets.
J'ai donc essayé de décomposer le traitement à l'aide des différents cmdlets liés aux providers :
[code:1]
...
Get-Childitem -recurse |
Where {!$_.PSIsContainer -and {$_.LastWriteTime -gt '08/30/2010'}} |
Foreach {
$CurrentFile=$_.FullName
$NewFile=$CurrentFile -replace ([regex]::Escape($Origine)),$Destination
$TargetDir=Split-Path $NewFile -Parent
write-debug \"`r`n$CurrentFile`r`n$NewFile`r`n$TargetDir\"
$null=New-Item $TargetDir -type directory -ea SilentlyContinue
Copy-item $CurrentFile -Force -Destination $TargetDir -Whatif
remove-item $CurrentFile -Whatif
}
[/code:1]
La présence du filtre facilite les choses, une fois ceci validé on s'aperçoit, à vérifier tout de même, qu'avec la présence du répertoire cible on s'assure d'un comportement prévisible.
Je reste prudent sur cet énoncé, car je n'ai pas créé de jeux de tests pertinents.
Si on regarde sur MS-Connect les posts liés à move-item ou copy-item, nombreux sont ceux fermés ayant pour cause \"by design\", le problème c'est que la raison \"by design\" n'est connu que l'équipe de dev !
En creux via MS-Connect on peut le retrouver.
Il faut avec PS savoir perdre du temps avec des broutilles !!!
Dans ce contexte de déplacement on peut aussi constater que les objets, une fois passés dans le pipeline, devraient posséder un champ origine, par exemple via un Add-MemberOrigine, enfin ça c'est une autre réflexion...
Je t'en prie, ton pb m'a également permis d'apprendre, d'où mon précédent message:Merci beaucoup!!!
Laurent Dardenne écrit:
sous-entendu, à ne pas savoir le faire.Tu n'es pas le seul
sarlin écrit:
Bah là, un peu d'expérience ne nuit pas.Maintenant je vais chercher le comment tu as fait
Ton traitement ressemble à un XCopy, j'ai donc cherché sur le net qq exemples, certes peu probant, mais les premiers liens renvoyés par google portent, si je puis dire, un regarde critique à propos des cmdlets liés au provider FileSystem.
Ton approche autour de Copy-item porte un début de solution, car que ce soit avec move ou copy la présence du répertoire cible semble modifier le comportement de ces cmdlets.
J'ai donc essayé de décomposer le traitement à l'aide des différents cmdlets liés aux providers :
[code:1]
...
Get-Childitem -recurse |
Where {!$_.PSIsContainer -and {$_.LastWriteTime -gt '08/30/2010'}} |
Foreach {
$CurrentFile=$_.FullName
$NewFile=$CurrentFile -replace ([regex]::Escape($Origine)),$Destination
$TargetDir=Split-Path $NewFile -Parent
write-debug \"`r`n$CurrentFile`r`n$NewFile`r`n$TargetDir\"
$null=New-Item $TargetDir -type directory -ea SilentlyContinue
Copy-item $CurrentFile -Force -Destination $TargetDir -Whatif
remove-item $CurrentFile -Whatif
}
[/code:1]
La présence du filtre facilite les choses, une fois ceci validé on s'aperçoit, à vérifier tout de même, qu'avec la présence du répertoire cible on s'assure d'un comportement prévisible.
Je reste prudent sur cet énoncé, car je n'ai pas créé de jeux de tests pertinents.
Si on regarde sur MS-Connect les posts liés à move-item ou copy-item, nombreux sont ceux fermés ayant pour cause \"by design\", le problème c'est que la raison \"by design\" n'est connu que l'équipe de dev !
En creux via MS-Connect on peut le retrouver.
Il faut avec PS savoir perdre du temps avec des broutilles !!!
Dans ce contexte de déplacement on peut aussi constater que les objets, une fois passés dans le pipeline, devraient posséder un champ origine, par exemple via un Add-MemberOrigine, enfin ça c'est une autre réflexion...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.081 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Problème avec Move-Item