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 7 mois #7743
par David
Réponse de David sur le sujet Re:Problème avec Move-Item
Merci pour ta réponse Laurent!Super claire en plus!
Mais je n'ai toujours pas réussi à trouver comment faire.
Insérer le contenu [code:1]C:\temp1\test[/code:1] dans [code:1]c:\temp2\test[/code:1].
Vu que le répertoire existe déjà,il me copie tout dans [code:1]C:\temp2[/code:1] et pas dans [code:1]C:\temp2\test[/code:1].
Merci de votre aide!<br><br>Message édité par: sarlin, à: 7/09/10 11:47
Mais je n'ai toujours pas réussi à trouver comment faire.
Insérer le contenu [code:1]C:\temp1\test[/code:1] dans [code:1]c:\temp2\test[/code:1].
Vu que le répertoire existe déjà,il me copie tout dans [code:1]C:\temp2[/code:1] et pas dans [code:1]C:\temp2\test[/code:1].
Merci de votre aide!<br><br>Message édité par: sarlin, à: 7/09/10 11:47
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 13 ans 7 mois #7744
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème avec Move-Item
sarlin écrit:
Laurent Dardenne écrit:
[code:1]
G:\temp\test> gci *|move-item -destination {\"g:\temp\test2\$($_.name)\"} -Whatif
[/code:1]
L'usage du paramètre -Whatif permet de valider les noms reconstruit et c'est plus prudent lors des tests. On a vite fait de perdre des fichiers .
Tu peux aussi consulter ce post qui aborde le déplacement récursive basé sur Move-Item.
A toi de jouer
[edit]
coquille dans le move-item<br><br>Message édité par: Laurent Dardenne, à: 7/09/10 13:31
Je t'avais donné une piste :Mais je n'ai toujours pas réussi à trouver comment faire.
Laurent Dardenne écrit:
En utilisant un block de script à liaison retardée , on peut reconstruire le nom de fichier :Je n'ai pas testé de déplacer fichier par fichier en reconstruisant le chemin cible.
[code:1]
G:\temp\test> gci *|move-item -destination {\"g:\temp\test2\$($_.name)\"} -Whatif
[/code:1]
L'usage du paramètre -Whatif permet de valider les noms reconstruit et c'est plus prudent lors des tests. On a vite fait de perdre des fichiers .
Tu peux aussi consulter ce post qui aborde le déplacement récursive basé sur Move-Item.
A toi de jouer
[edit]
coquille dans le move-item<br><br>Message édité par: Laurent Dardenne, à: 7/09/10 13:31
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 13 ans 7 mois #7746
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème avec Move-Item
Une solution pour déplacer une arborescence (on peut y ajouter un filtre) :
[code:1]
$origine='G:\Temp\test\'
$Destination='G:\Temp\test2\'
gci -path $pwd -rec|
move-item -destination {
write-debug $_.FullName
$_.fullname -replace ([regex]::Escape($Origine)),$Destination
} -Whatif
[/code:1]
A noter que l'affichage de -Whatif affiche autant d'étapes que de sous-repertoires, là où une opération de déplacement n'effectuera qu'une seule étape.
Un exemple en cas d'erreur :
[code:1]
#Dans explorer on se place sur un répertoire de l'arborescence à déplacer
# G:\TEMP
# -test
#
rep1
# ----rep2
#
rep4
#
rep3
#
rep6
#
rep5
# -test2
PS G:\temp\test> gci -path $pwd -rec|move-item -destination {write-debug $_.FullName;$_.fullname -replace ([regex]::Escape($Origine)),$Destination}
DÉBOGUER : G:\temp\test\rep1
Move-Item : L'accès au chemin d'accès 'G:\temp\test\rep1' est refusé. #Exception MoveDirectoryItemIOError
DÉBOGUER : G:\temp\test\rep1\rep2
Move-Item : Impossible de trouver une partie du chemin d'accès.
DÉBOGUER : G:\temp\test\rep1\rep2\rep4
Move-Item : Impossible de trouver une partie du chemin d'accès.
[/code:1]
On ferme explorer ou on se place sur un autre répertoire en dehors de l'arborescence à déplacer :
[code:1]
gci -path $pwd -rec|move-item -destination {write-debug $_.FullName;$_.fullname -replace [regex]::Escape($Origine),$Destination}
DÉBOGUER : G:\temp\test\rep1
[/code:1]
Message édité par: Laurent Dardenne, à: 7/09/10 14:05<br><br>Message édité par: Laurent Dardenne, à: 13/09/10 15:52
[code:1]
$origine='G:\Temp\test\'
$Destination='G:\Temp\test2\'
gci -path $pwd -rec|
move-item -destination {
write-debug $_.FullName
$_.fullname -replace ([regex]::Escape($Origine)),$Destination
} -Whatif
[/code:1]
A noter que l'affichage de -Whatif affiche autant d'étapes que de sous-repertoires, là où une opération de déplacement n'effectuera qu'une seule étape.
Un exemple en cas d'erreur :
[code:1]
#Dans explorer on se place sur un répertoire de l'arborescence à déplacer
# G:\TEMP
# -test
#
rep1
# ----rep2
#
rep4
#
rep3
#
rep6
#
rep5
# -test2
PS G:\temp\test> gci -path $pwd -rec|move-item -destination {write-debug $_.FullName;$_.fullname -replace ([regex]::Escape($Origine)),$Destination}
DÉBOGUER : G:\temp\test\rep1
Move-Item : L'accès au chemin d'accès 'G:\temp\test\rep1' est refusé. #Exception MoveDirectoryItemIOError
DÉBOGUER : G:\temp\test\rep1\rep2
Move-Item : Impossible de trouver une partie du chemin d'accès.
DÉBOGUER : G:\temp\test\rep1\rep2\rep4
Move-Item : Impossible de trouver une partie du chemin d'accès.
[/code:1]
On ferme explorer ou on se place sur un autre répertoire en dehors de l'arborescence à déplacer :
[code:1]
gci -path $pwd -rec|move-item -destination {write-debug $_.FullName;$_.fullname -replace [regex]::Escape($Origine),$Destination}
DÉBOGUER : G:\temp\test\rep1
[/code:1]
Message édité par: Laurent Dardenne, à: 7/09/10 14:05<br><br>Message édité par: Laurent Dardenne, à: 13/09/10 15:52
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 7 mois #7754
par David
Réponse de David sur le sujet Re:Problème avec Move-Item
J'ai réussi à faire ce que je voulais...Il le fait mais affiche des messages d'erreur quand même.
Voici mon code:
[code:1]cd C:\Users\david\Desktop\test
$var = Get-ChildItem -recurse | Where-Object {$_.LastWriteTime -gt '08/30/2010'}
Copy-item $var -destination C:\Users\david\Desktop\test2 -r -force
Get-Childitem -recurse | ?{!$_.PSIsContainer -and {$_.LastWriteTime -gt '08/30/2010'}} | remove-item[/code:1]
Message d'erreur :
[code:1]Copy-Item : Impossible de trouver le chemin d'accès « C:\Users\david\Desktop\test\2 », car il n'existe pas.
Au niveau de C:\PS\test.ps1 : 4 Caractère : 10
+ Copy-item <<<< $var -destination C:\Users\david\Desktop\test2 -r -force
+ CategoryInfo : ObjectNotFound: (C:\Users\david\Desktop\test\2:«»String) [Copy-Item], ItemNotFoundExceptio
n
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand[/code:1]
Merci de ton aide<br><br>Message édité par: sarlin, à: 9/09/10 15:16
Voici mon code:
[code:1]cd C:\Users\david\Desktop\test
$var = Get-ChildItem -recurse | Where-Object {$_.LastWriteTime -gt '08/30/2010'}
Copy-item $var -destination C:\Users\david\Desktop\test2 -r -force
Get-Childitem -recurse | ?{!$_.PSIsContainer -and {$_.LastWriteTime -gt '08/30/2010'}} | remove-item[/code:1]
Message d'erreur :
[code:1]Copy-Item : Impossible de trouver le chemin d'accès « C:\Users\david\Desktop\test\2 », car il n'existe pas.
Au niveau de C:\PS\test.ps1 : 4 Caractère : 10
+ Copy-item <<<< $var -destination C:\Users\david\Desktop\test2 -r -force
+ CategoryInfo : ObjectNotFound: (C:\Users\david\Desktop\test\2:«»String) [Copy-Item], ItemNotFoundExceptio
n
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand[/code:1]
Merci de ton aide<br><br>Message édité par: sarlin, à: 9/09/10 15:16
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 7 mois #7755
par David
Réponse de David sur le sujet Re:Problème avec Move-Item
<br><br>Message édité par: sarlin, à: 9/09/10 15:17
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 13 ans 7 mois #7756
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème avec Move-Item
sarlin écrit:
Ton quand même ne me semble pas de mise, car la situation n'est pas identique.
sarlin écrit:
Ton post initial concernait un pb autour du cmdlet Move-item, maintenant tu utilises Copy-item.Il le fait mais affiche des messages d'erreur quand même.
[code:1]
Copy-item $var -destination ...
[/code:1]
Ton quand même ne me semble pas de mise, car la situation n'est pas identique.
sarlin écrit:
Puisque les cmdlets de provider sont dédiés à une tâche, on a Copy et Move mais pas Copy -RemoveCondition {xxx}, tu peux recoder la logique de A à Z ou utiliser un filtre dans un segment de pipeline, voir étudier un proxy de cmdlet autour de Copy-Item, un XCopy-FSItem...Et j'aurais bien aimé de pas supprimer les répertoires,comment faire?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.083 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Problème avec Move-Item