Question Problème avec Move-Item

Plus d'informations
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

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

Plus d'informations
il y a 13 ans 7 mois #7744 par Laurent Dardenne
sarlin écrit:

Mais je n'ai toujours pas réussi à trouver comment faire.

Je t'avais donné une piste :
Laurent Dardenne écrit:

Je n'ai pas testé de déplacer fichier par fichier en reconstruisant le chemin cible.

En utilisant un block de script à liaison retardée , on peut reconstruire le nom de fichier :
[code:1]
G:\temp\test&gt; gci *|move-item -destination {\&quot;g:\temp\test2\$($_.name)\&quot;} -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 :S .
Tu peux aussi consulter ce post qui aborde le déplacement récursive basé sur Move-Item.
A toi de jouer :P
[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.

Plus d'informations
il y a 13 ans 7 mois #7746 par Laurent Dardenne
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&gt; 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.

Plus d'informations
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 &lt;&lt;&lt;&lt; $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.

Plus d'informations
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.

Plus d'informations
il y a 13 ans 7 mois #7756 par Laurent Dardenne
sarlin écrit:

Il le fait mais affiche des messages d'erreur quand même.
[code:1]
Copy-item $var -destination ...
[/code:1]

Ton post initial concernait un pb autour du cmdlet Move-item, maintenant tu utilises Copy-item.
Ton quand même ne me semble pas de mise, car la situation n'est pas identique.
sarlin écrit:

Et j'aurais bien aimé de pas supprimer les répertoires,comment faire?

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

Tutoriels PowerShell

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

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