Question
Déplacer les fichiers avec leur arboresc. (Résolu)
- big_cham
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 24
- Remerciements reçus 0
il y a 16 ans 4 mois #1366
par big_cham
Réponse de big_cham sur le sujet Re:Déplacer les fichiers listés dans un fichier
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
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.
- Robin Lemesle
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 260
- Remerciements reçus 0
il y a 16 ans 4 mois #1373
par Robin Lemesle
Robin MVP PowerShell
Réponse de Robin Lemesle sur le sujet Re:Déplacer les fichiers listés dans un fichier
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.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 4 mois #1376
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Déplacer les fichiers listés dans un fichier
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 \"get-content extensions.txt\" est encadrée par @() pour forcer $extensions à être une liste, même si le fichier ne contient qu'une extension.
Janel
[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 \"get-content extensions.txt\" 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.
- big_cham
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 24
- Remerciements reçus 0
il y a 16 ans 4 mois #1382
par big_cham
Réponse de big_cham sur le sujet Re:Déplacer les fichiers listés dans un fichier
Merci Janel. Ta solution fonctionne très bien.
On peut considérer que mon problème est résolu !
On peut considérer que mon problème est résolu !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.071 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Déplacer les fichiers avec leur arboresc. (Résolu)