Question
Copier fichier en fonction de sa date de création
- Evea
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 10 ans 10 mois #19761
par Evea
Copier fichier en fonction de sa date de création a été créé par Evea
Bonjour à tous.
Je me permets de (re)venir demander de l'aide sur ce forum qui m'a été très utile il y a quelques mois
Voila : ce que je dois faire ne me parait pas très compliqué (en fait, c'est très facile je pense, même), mais je suis une brêle en programmation/scripting, du coup, un petit rien peut s'avérer très bloquant...
Bref.
Je veux créer un script qui :
- copie un fichier d'un répertoire X à un répertoire Y
- MAIS ce script ne doit copier QUE le fichier dont la date de création est la date du jour (et qui, accessoirement ne contient que \"blabla\" dans le titre, mais ça, j'ai trouvé comment faire)
Voila ce que j'ai pour le moment :
[code:1]$repertoire = 'C:\Users\nom_user\Documents\X\'
$Fichiers = Get-ChildItem $repertoire
$cible = 'C:\Users\nom_user\Documents\Y'
$date = Get-Date -Format 'd/MM/yyyy'
Foreach ($Fichiers in Get-ChildItem $repertoire) {
if ($Fichiers.Name -match 'blabla' -and $Fichiers.CreationTime -eq $date){
Copy-Item -Path $Fichiers.FullName -Destination $cible
Write-Host 'Le fichier' $Fichiers 'a été copié'
}
}[/code:1]
J'arrive à copier les fichier qui contiennent \"blabla\" dans le titre.
En revanche, copier les fichiers dont la date de création est \"aujourd'hui\"... ça ne fonctionne pas.
Je pense que le problème se situe sur le format de la date.
J'avais essayé au début avec \"dddd d MMM yyyy\", mais ça ne fonctionnait pas mieux...
La date de création d'un fichier est, dans ses \"Propriétés\" au format 'dddd d MMM yyyy H:m'.
Mais dans l'explorateur (dans le volet en bas), elle est au format 'd/MM/yyyy H:m'.
Or, moi, je ne veux pas travailler sur l'heure, mais uniquement sur la date, et je me demande si ce n'est pas ça qui bloque...
Je remercie d'avance ceux qui se pencheront sur mon problème et qui m'aideront à le résoudre
EDIT : j'ai un peu de progrès.
J'ai mis mon format de date dans ma variable à 'MM/d/yyyy', et en demandant à mon script de me copier les fichiers dont la date était INFERIEURE (donc -lt) à la date du jour, il m'a bien copié deux fichiers.
Mais en mettant -eq, ça ne fonctionne toujours pas...
EDIT2 (désolée) : je crois que mon soucis est résolu ! Il suffisait de lui demander de copier les fichiers dont la date de création est 'plus grande ou égale à la date du jour\" (-ge)
Dans ce cas, je suis curieuse de savoir pourquoi -eq ne fonctionnait pas...
Si quelqu'un à une réponse, je suis preneuse !
Message édité par: Callypso, à: 22/05/15 16:40
Message édité par: Callypso, à: 22/05/15 16:43<br><br>Message édité par: Callypso, à: 22/05/15 16:43
Je me permets de (re)venir demander de l'aide sur ce forum qui m'a été très utile il y a quelques mois
Voila : ce que je dois faire ne me parait pas très compliqué (en fait, c'est très facile je pense, même), mais je suis une brêle en programmation/scripting, du coup, un petit rien peut s'avérer très bloquant...
Bref.
Je veux créer un script qui :
- copie un fichier d'un répertoire X à un répertoire Y
- MAIS ce script ne doit copier QUE le fichier dont la date de création est la date du jour (et qui, accessoirement ne contient que \"blabla\" dans le titre, mais ça, j'ai trouvé comment faire)
Voila ce que j'ai pour le moment :
[code:1]$repertoire = 'C:\Users\nom_user\Documents\X\'
$Fichiers = Get-ChildItem $repertoire
$cible = 'C:\Users\nom_user\Documents\Y'
$date = Get-Date -Format 'd/MM/yyyy'
Foreach ($Fichiers in Get-ChildItem $repertoire) {
if ($Fichiers.Name -match 'blabla' -and $Fichiers.CreationTime -eq $date){
Copy-Item -Path $Fichiers.FullName -Destination $cible
Write-Host 'Le fichier' $Fichiers 'a été copié'
}
}[/code:1]
J'arrive à copier les fichier qui contiennent \"blabla\" dans le titre.
En revanche, copier les fichiers dont la date de création est \"aujourd'hui\"... ça ne fonctionne pas.
Je pense que le problème se situe sur le format de la date.
J'avais essayé au début avec \"dddd d MMM yyyy\", mais ça ne fonctionnait pas mieux...
La date de création d'un fichier est, dans ses \"Propriétés\" au format 'dddd d MMM yyyy H:m'.
Mais dans l'explorateur (dans le volet en bas), elle est au format 'd/MM/yyyy H:m'.
Or, moi, je ne veux pas travailler sur l'heure, mais uniquement sur la date, et je me demande si ce n'est pas ça qui bloque...
Je remercie d'avance ceux qui se pencheront sur mon problème et qui m'aideront à le résoudre
EDIT : j'ai un peu de progrès.
J'ai mis mon format de date dans ma variable à 'MM/d/yyyy', et en demandant à mon script de me copier les fichiers dont la date était INFERIEURE (donc -lt) à la date du jour, il m'a bien copié deux fichiers.
Mais en mettant -eq, ça ne fonctionne toujours pas...
EDIT2 (désolée) : je crois que mon soucis est résolu ! Il suffisait de lui demander de copier les fichiers dont la date de création est 'plus grande ou égale à la date du jour\" (-ge)
Dans ce cas, je suis curieuse de savoir pourquoi -eq ne fonctionnait pas...
Si quelqu'un à une réponse, je suis preneuse !
Message édité par: Callypso, à: 22/05/15 16:40
Message édité par: Callypso, à: 22/05/15 16:43<br><br>Message édité par: Callypso, à: 22/05/15 16:43
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 10 ans 10 mois #19763
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Copier fichier en fonction de sa date de création
Callypso écrit:
[code:1]$Date=Get-Date
$Date.Date
#Et donc $Fichiers.CreationTime.CreationTime.Date
[/code:1]
Quant au format c'est pour l'affichage, cela ne change pas la valeur de la donnée, midi c'est tjr à 12 h
Ceci dit la variable Fichiers avec un s, me laisse dubitatif ...
C'est fort probable, essaie avec :Or, moi, je ne veux pas travailler sur l'heure, mais uniquement sur la date, et je me demande si ce n'est pas ça qui bloque...
[code:1]$Date=Get-Date
$Date.Date
#Et donc $Fichiers.CreationTime.CreationTime.Date
[/code:1]
Quant au format c'est pour l'affichage, cela ne change pas la valeur de la donnée, midi c'est tjr à 12 h
Ceci dit la variable Fichiers avec un s, me laisse dubitatif ...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Copier fichier en fonction de sa date de création