J'ai besoin de déplacer tous les fichiers d'un dossier à un autre mais pas les sous-dossiers ou quoi que ce soit à l'intérieur. Je n'ai aucune idée du nom ou de l'extension des fichiers que je devrai déplacer (et certains n'en auront pas) donc je ne peux pas utiliser -Include. Voici un exemple de la structure de mon dossier:
Je veux déplacer File1 et File2 dans Folder3 sans déplacer File3 et File4.
Pour l'instant, j'ai quelque chose qui ressemble à ceci:
$SouceFolder = "c:\Folder1" $DestinationFolder = "c:\Folder3" Robocopy $SouceFolder $DestinationFolder /mov
4 Réponses :
Avez-vous essayé d'utiliser l'option -Recurse comme celle-ci?
Get-ChildItem -Path "c: \ Folder1 \ *. *" -Recurse | Move-Item -Destination "c: \ Folder3 \"
Il existe une meilleure alternative à Robocopy pour copier des fichiers. Avec la commande robocopy, vous avez un meilleur contrôle sur ce qui est copié avec les codes d'erreur en cas d'échec.
dans votre cas, ce serait juste un simple code comme celui-ci.
$SouceFolder = "c:\Folder1" $DestinationFolder = "c:\Folder3" Robocopy $SouceFolder $DestinationFolder
voir le documentation officielle de robocopy pour plus d'options
C'est parfait ! Je viens d'ajouter l'option / mov pour déplacer les fichiers au lieu de les copier. Merci beaucoup!
Essayez ceci:
Get-Childitem "FilePath" -Recurse | Where-Object {!($_.PSIscontainer)} | Move-Item -Path $_.Fullname -Destination "Destination"
J'ai juste essayé ceci et cela ne fonctionne pas, il copie toujours tous les fichiers et sous-dossiers.
Cela devrait fonctionner.
Notez que je ne pas ajouter \ * au dossier source
$SourceFolder = "c:\Folder1"
$DestinationFolder = "c:\Folder3"
# create the target folder if it does not already exist
if (!(Test-Path -Path $DestinationFolder -PathType Container)) {
$null = New-Item -Path $DestinationFolder -ItemType Directory
}
Get-ChildItem -Path $SourceFolder -File | Move-Item -Destination $DestinationFolder
Move-Item -Path FolderToMove -Destination DestinationFolder