Question Déplacer des fichiers dans des dossiers du même nom

Plus d'informations
il y a 1 an 6 mois - il y a 1 an 6 mois #32715 par Cédric
Bonjour à tous,

Afin de faciliter mon travail, et étant débutant en Powershell, je cherche la possibilité de déplacer des fichiers dans un dossier qui porte le même numéro.
Exemple:
dans le C:\Users\user\Desktop\Factures
Fichiers : Mr tatati numéro 555555555.xlsx
Fichiers : Mr numéro 4545454545 tata 65656565 .xlsx
dans
Dossier : Mr tatati numéro 555555555
Dossier : Mr numéro 4545454545 tata 65656565 .xlsx

il faudrait trouver une concordance nom fichiers / noms de dossiers et les déplacer dans le bon dossier.

j'ai trouvé ça mais il déplace uniquement le fichier nommé "gg" fixe dans le dossier fixe "gg"
Move-Item -Path "C:\Users\user\Desktop\Factures\*gg*" -Destination "C:\Users\user\Desktop\Factures\gg\"

je ne sais pas si ma question est bien compréhensible ou même si il existe une possibilité....

merci d'avance pour votre aide.



 
Dernière édition: il y a 1 an 6 mois par Cédric.

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

Plus d'informations
il y a 1 an 6 mois #32717 par Laurent Dardenne
Salut,
la propriété BaseName d'un fichier permet de récupérer la partie nom uniquement sans l'extension.
Un appel à Test-Path avant de déplacer permet savoir s'il existe un répertorie du même nom, qq chose comme ceci :
$files=Dir factures
$Name=Files[0].BaseName
if (Test-Path "Destination\$Name") {Move-item  -Path "facture\files[0]"  -Des "destination\$Name\"
else { ' move impossible'}

Tutoriels PowerShell

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

Plus d'informations
il y a 1 an 6 mois - il y a 1 an 6 mois #32722 par Cédric
Bonsoir,merci beaucoup pour ta réponse, je planche dessus toute la soirée
mais au moins je comprends plus ou moins.

j'ai deux petits soucis;
avec le 0 il ne prends que le premier fichier et je me suis aperçu en changeant il prends le deuxième fichier etc...
Y a-t-il un moyen qu'il prenne tous les fichiers ?

mon 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...
Y a-t-il une solution ?
$Racine= "C:\Users\user\Desktop\Factures\"

$files=Dir $Racine

$Nom=($Files[0].BaseName)

$EXT=".xlsm"

if (Test-Path "$Racine$Nom") {Move-item  -Path "$Racine$Nom$EXT"  -Des "$Racine$Nom\"}
else { ' move impossible'}
Dernière édition: il y a 1 an 6 mois par Cédric.

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

Plus d'informations
il y a 1 an 6 mois - il y a 1 an 6 mois #32723 par Cédric
Re; j'ai trouvé pour les espaces
$Racine= "C:\Users\user\Desktop\Factures\"


################################################################################################
#va supprimer les espaces en trop
$Source = Dir "$Racine"

$Source| rename-item -NewName {$_.name -replace '(^\s+|\s+$)','' -replace '\s+',' '}
################################################################################################



$files=Dir $Racine

$Nom=($Files[2].BaseName)

Write-host "$Nom"



$EXT=" .xlsm"

if (Test-Path "$Racine$Nom") {Move-item  -Path "$Racine$Nom$EXT"  -Des "$Racine$Nom\"}
else { ' move impossible'}
Dernière édition: il y a 1 an 6 mois par Cédric.

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

Plus d'informations
il y a 1 an 6 mois - il y a 1 an 6 mois #32724 par Laurent Dardenne
Salut,
>>avec le 0 il ne prends que le premier fichier
il faut boucler sur la collection de fichiers avec foreach ($File in $Source)

Tutoriels PowerShell
Dernière édition: il y a 1 an 6 mois par Laurent Dardenne.

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

Plus d'informations
il y a 1 an 6 mois #32727 par Cédric
Merci infiniment pour ton aide, c'est parfait Trop content !
ci-dessous le code pour ceux qui veulent.
Bonne journée
$Racine= "C:\Users\user\Desktop\Factures\"
################################################################################################
#va supprimer les espaces en trop
$Source = Dir "$Racine"
$Source| rename-item -NewName {$_.name -replace '(^\s+|\s+$)','' -replace '\s+',' '}
################################################################################################
$files=Dir $Racine
foreach ($Files in $Source){
$Nom=($Files[0].BaseName)
Write-host "$Nom"
$EXT=" .xlsm"
if (Test-Path "$Racine$Nom") {Move-item  -Path "$Racine$Nom$EXT"  -Des "$Racine$Nom\"}
else { ' move impossible'}
}

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

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