1
votes

Powershell déplace des fichiers mais pas des sous-dossiers

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:

  • Dossier1
    • Fichier1
    • Fichier2
    • Dossier2
      • Fichier3
      • Fichier4
  • Dossier3

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


0 commentaires

4 Réponses :


2
votes

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


1 commentaires

C'est parfait ! Je viens d'ajouter l'option / mov pour déplacer les fichiers au lieu de les copier. Merci beaucoup!



0
votes

Essayez ceci:

Get-Childitem "FilePath" -Recurse | Where-Object {!($_.PSIscontainer)} | Move-Item -Path $_.Fullname -Destination "Destination"


1 commentaires

J'ai juste essayé ceci et cela ne fonctionne pas, il copie toujours tous les fichiers et sous-dossiers.



1
votes

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


0 commentaires

0
votes