Question
Déplacer des fichiers dans des dossiers du même nom
- ericlm128
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 179
- Remerciements reçus 37
il y a 1 an 1 mois #32745
par ericlm128
Réponse de ericlm128 sur le sujet Déplacer des fichiers dans des dossiers du même nom
J'ai quelques doutes, tu es sur que cela fonctionne bien ainsi pour tout les fichiers ?
J'aurai fait comme ceci si ça peux te servir
J'aurai fait comme ceci si ça peux te servir
$racine = "C:\Users\user\Desktop\Factures"
$files = Get-ChildItem -LiteralPath $racine
foreach ($file in $files)
{
$name = $file.BaseName.Trim()
Write-host $name
if (Test-Path -LiteralPath "${racine}\${name}" -PathType Container)
{
Move-item -LiteralPath $file.FullName -Destination "${racine}\${name}\${name}.$($file.Extension)"
}
else
{
Write-Host 'Move impossible'
}
}
Connexion ou Créer un compte pour participer à la conversation.
- Cédric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 1
il y a 1 an 1 mois - il y a 1 an 1 mois #32746
par Cédric
Réponse de Cédric sur le sujet Déplacer des fichiers dans des dossiers du même nom
Salut,
merci pour ton code.
Effectivement tu as raison sur tes doutes, j'ai du le modifier un peu.
j'ai tester le tien il est pas mal, mais n'arrange pas les fichiers qui on des espaces.
par expl.: ficher qui ont des espaces partout .xlsm
malheureusement par manque de temps je n'ai pas publier ma modification ci-dessous.
il ne le fait pas en une fois (je ne sais pas pourquoi) j'ai du répéter le code et ça fonctionne très bien.
merci pour ton code.
Effectivement tu as raison sur tes doutes, j'ai du le modifier un peu.
j'ai tester le tien il est pas mal, mais n'arrange pas les fichiers qui on des espaces.
par expl.: ficher qui ont des espaces partout .xlsm
malheureusement par manque de temps je n'ai pas publier ma modification ci-dessous.
il ne le fait pas en une fois (je ne sais pas pourquoi) j'ai du répéter le code et ça fonctionne très bien.
$Racine="C:\Users\user\Desktop\Nouveau dossier\"
$Source = Dir "$Racine"
$files=Dir $Racine
foreach ($Files in $Source){
$Nom=($Files[0].baseName)
$Nomok= ($Files[0].baseName).Substring(0,($Files[0].baseName).Length-1) #supprime le dernier caratère du nom de fichier (pas physiquement)
$Extension=$Files.extension #extension
$Source| rename-item -NewName {$_.name-replace '(^\s+|\s+$)',' ' -replace '\s+',' '} #supprime les espaces dans les nom de fichiers et dossier
if (Test-Path "$Racine$Nomok") {Move-item -Path "$Racine$Nom$Extension" -Des "$Racine$Nomok\" } #ceux avec espace après le nom
if (Test-Path "$Racine$Nom") {Move-item -Path "$Racine$Nom$Extension" -Des "$Racine$Nom\"} #ceux sans espace après le nom
else { 'Dossier introuvable'}
}
$Source = Dir "$Racine"
$files=Dir $Racine
foreach ($Files in $Source){
$Nom=($Files[0].baseName)
$Nomok= ($Files[0].baseName).Substring(0,($Files[0].baseName).Length-1) #supprime le dernier caratère du nom de fichier (pas physiquement)
$Extension=$Files.extension #extension
$Source| rename-item -NewName {$_.name-replace '(^\s+|\s+$)',' ' -replace '\s+',' '} #supprime les espaces dans les nom de fichiers et dossier
if (Test-Path "$Racine$Nomok") {Move-item -Path "$Racine$Nom$Extension" -Des "$Racine$Nomok\" } #ceux avec espace après le nom
if (Test-Path "$Racine$Nom") {Move-item -Path "$Racine$Nom$Extension" -Des "$Racine$Nom\"} #ceux sans espace après le nom
else{[System.Windows.Forms.MessageBox]::Show("Dossier introuvable"+": "+$Nom, "Information")}
}
Dernière édition: il y a 1 an 1 mois par Cédric.
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 179
- Remerciements reçus 37
il y a 1 an 1 mois - il y a 1 an 1 mois #32747
par ericlm128
Voici un ajustement
Ton code ne dois encore pas fonctionner, au moins pour cette raison
Maintenant je constate que tu peux aussi avoir des problèmes de nommage dans les dossiers ?
PS : Il semble que tu as dupliquer ton code, c'est normal ?
Réponse de ericlm128 sur le sujet Déplacer des fichiers dans des dossiers du même nom
Effectivement, j'ai suivi tes indications et traitait les espaces de début et finmon deuxième soucis;
j'ai des fichiers qui ont un nom mais à la fin ils ont plusieurs espace avant l'extension.
exempl: Jean du jardin .xlsm , du coup il ne reconnait pas le dossier qui lui n'as pas d'espaces...
Voici un ajustement
$racine = "C:\Users\user\Desktop\Factures"
$files = Get-ChildItem -LiteralPath $racine
foreach ($file in $files)
{
$name = ($file.BaseName -replace "\s+", " ").Trim()
Write-host $name
if (Test-Path -LiteralPath "${racine}\${name}" -PathType Container)
{
Move-item -LiteralPath $file.FullName -Destination "${racine}\${name}\${name}.$($file.Extension)"
}
else
{
Write-Host 'Move impossible'
}
}
Ton code ne dois encore pas fonctionner, au moins pour cette raison
$_.name-replace
Maintenant je constate que tu peux aussi avoir des problèmes de nommage dans les dossiers ?
PS : Il semble que tu as dupliquer ton code, c'est normal ?
Dernière édition: il y a 1 an 1 mois par ericlm128.
Connexion ou Créer un compte pour participer à la conversation.
- Cédric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 1
il y a 1 an 1 mois - il y a 1 an 1 mois #32748
par Cédric
Réponse de Cédric sur le sujet Déplacer des fichiers dans des dossiers du même nom
j'étais justement entrain de voir ton code
j'ai repris ton code et;
[/code]
PS : Il semble que tu as dupliquer ton code, c'est normal ?
- il ne le fait pas en une fois (je ne sais pas pourquoi) j'ai du répéter le code et ça fonctionne.
- non, aucuns problèmes de nommage dans les dossiers après plusieurs tests.
j'ai repris ton code et;
[code]$racine = "C:\Users\user\Desktop\Nouveau dossier\"
$Source = Dir "$Racine"
$Source| rename-item -NewName {$_.name-replace '(^\s+|\s+$)',' ' -replace '\s+',' '} #supprime les espaces dans les nom de fichiers et dossier
$files = Get-ChildItem -LiteralPath $racine
foreach ($file in $files)
{
$name = $file.BaseName.Trim()
Write-host $name
if (Test-Path -LiteralPath "${racine}\${name}" -PathType Container)
{
Move-item -LiteralPath $file.FullName -Destination "${racine}\${name}\${name}.$($file.Extension)"
}
else
{
[System.Windows.Forms.MessageBox]::Show("Dossier introuvable"+": "+$name, "Information")
}
}
PS : Il semble que tu as dupliquer ton code, c'est normal ?
- il ne le fait pas en une fois (je ne sais pas pourquoi) j'ai du répéter le code et ça fonctionne.
- non, aucuns problèmes de nommage dans les dossiers après plusieurs tests.
Dernière édition: il y a 1 an 1 mois par Cédric.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.077 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Déplacer des fichiers dans des dossiers du même nom