Question Déplacer les fichiers avec leur arboresc. (Résolu)

Plus d'informations
il y a 16 ans 4 mois #1366 par big_cham
Bonjour tout le monde,

En fait, j'ai un script qui fonctionne mais sans lire le contenu d'un fichier pour l'instant.

[code:1]# Liste des extensions Interdites
$extensions = @(\".exe\",\".PSD\", \".TIFF\", \".AVI\", \".MP3\", \".BMP\", \".MPEG\", \".MPG\", \".PPS\"«»)

# Identification de la source et de la destination

$sourceRoot = 'X:\'
$destinationRoot = 'Z:\xxx\ppp\'

# Vérification du chemin
if (-not $sourceRoot.EndsWith('\')) {
$sourceRoot += '\'
}

if (-not $destinationRoot.EndsWith('\')) {
$destinationRoot += '\'

}

# Parcourir l'arborescence recursivement
# Trouve les fichiers interdits

Get-ChildItem -LiteralPath $sourceRoot -Force -Recurse `
| Where-Object { (-not $_.PSIsContainer) -and ($extensions -contains $_.Extension) -and (($destinationRoot.Length -lt $sourceRoot.Length) -or ($_.PSPath -notmatch $destinationRoot.Replace('\','\\'))) } `
| ForEach-Object {

$psParentPath = $_.PSParentPath
if (-not $psParentPath.EndsWith('\')) {
$psParentPath += '\'
}

# Identification du dossier de destination
$destinationFolder = $PSParentPath.Replace($sourceroot,$destinationRoot)


# Création du dossier de destination s'il n'existe pas
if (-not (Test-Path -LiteralPath $destinationFolder)) {
New-Item -ItemType Directory -Path $destinationFolder |Out-Null
}

# Déplacer le fichier trouvé
Move-Item -LiteralPath $_.PSPath -Force -Destination $_.PSPath.Replace($sourceroot,$destinationRoot)
}

[/code:1]

Ce script est opérationnel et couvre mon besoin (sauf comme dit plus haut, la récupération des extensions avec un fichier).

Message édité par: big_cham, à: 17/12/07 08:41<br><br>Message édité par: big_cham, à: 17/12/07 08:42

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

Plus d'informations
il y a 16 ans 4 mois #1373 par Robin Lemesle
Bravo pour ta perceverance ;) , mais je reste persuadé qu'il existe un moyen plus simple. Dès que j'aurai un peu de temps, je ragarderai si je ne trouve pas quelque chose.

Robin MVP PowerShell

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

Plus d'informations
il y a 16 ans 4 mois #1376 par Jacques Barathon
Le script peut très facilement être modifié pour gérer la récupération des extensions à partir d'un fichier. Pour cela, remplace la première ligne par:

[code:1]$extensions = @(get-content extensions.txt)[/code:1]
Le fichier extensions.txt doit contenir les extensions à filtrer, une extension par ligne:

.exe
.psd
.tiff
.avi
.mp3

etc.

La commande \&quot;get-content extensions.txt\&quot; est encadrée par @() pour forcer $extensions à être une liste, même si le fichier ne contient qu'une extension.

Janel

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

Plus d'informations
il y a 16 ans 4 mois #1382 par big_cham
Merci Janel. Ta solution fonctionne très bien.

On peut considérer que mon problème est résolu !:cheer:

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

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