Récupérer uniquement la date d'un fichier
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
Récupérer uniquement la date d'un fichier
Bonjour,
Nouvelle sur le forum, je fais mes premiers pas en AutoIt.
J'aurai voulu savoir s'il existait une fonction qui récupérerait uniquement la date d'un fichier.
Aujourd'hui j'utilise la fonction "FileGetTime" qui me renvoie date et heure.
Existe-t-il une solution pour récupérer uniquement la date avec une autre fonction ou une autre solution permettant de récupérer que ce dont j'ai besoin sur la fonction que j'utilise actuellement ?
Merci à tous.
Nouvelle sur le forum, je fais mes premiers pas en AutoIt.
J'aurai voulu savoir s'il existait une fonction qui récupérerait uniquement la date d'un fichier.
Aujourd'hui j'utilise la fonction "FileGetTime" qui me renvoie date et heure.
Existe-t-il une solution pour récupérer uniquement la date avec une autre fonction ou une autre solution permettant de récupérer que ce dont j'ai besoin sur la fonction que j'utilise actuellement ?
Merci à tous.
Re: Récupérer uniquement la date d'un fichier
Il suffit de supprimer l'heure de la chaîne de caractères :
Local $sDate = FileGetTime ( @ScriptFullPath, 0, 1)
$sDate = StringTrimRight($sDate, 6)
ConsoleWrite($sDate)
$sDate = StringTrimRight($sDate, 6)
ConsoleWrite($sDate)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: Récupérer uniquement la date d'un fichier
Super, c'est exactement ce que je cherchais.
Je fais ensuite une comparaison avec la date du jour, si c'est la même alors je copie ailleurs. Mais ça ne fonctionne pas, j'ai comme l'impression que mon "_NowDate" est vide.
Si je l'affiche avec un "MsgBox($MB_SYSTEMMODAL, "", "la date du jour est " & _NowDate)" ça me retourne rien.
Je fais ensuite une comparaison avec la date du jour, si c'est la même alors je copie ailleurs. Mais ça ne fonctionne pas, j'ai comme l'impression que mon "_NowDate" est vide.
Si je l'affiche avec un "MsgBox($MB_SYSTEMMODAL, "", "la date du jour est " & _NowDate)" ça me retourne rien.
Re: Récupérer uniquement la date d'un fichier
Quand tu exécutes une fonction, il faut utiliser les parenthèses :
Pour ce dont tu as besoin, tu peux aussi faire comme ça :
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: Récupérer uniquement la date d'un fichier
Ah oui effectivement ça marche aussi.
Une autre question si cela ne te dérange pas.
J'arrive bien à copier mes fichiers mais j'ai un petit soucis.
Je compare la date des fichiers à la date du jour et si elles sont égales alors je copie vers mon nouveau répertoire.
Je dois copier tous les fichiers du jour de type "File*.txt"
Cependant, depuis mon fichier source j'ai plusieurs "File*.txt" et pas tous à la date du jour, donc il ne faut pas que je les copie.
Aujourd'hui soit il copie tout, soit rien. Il n'y a pas de trie.
Je te mets mon code si cela peut t'aider.
Une autre question si cela ne te dérange pas.
J'arrive bien à copier mes fichiers mais j'ai un petit soucis.
Je compare la date des fichiers à la date du jour et si elles sont égales alors je copie vers mon nouveau répertoire.
Je dois copier tous les fichiers du jour de type "File*.txt"
Cependant, depuis mon fichier source j'ai plusieurs "File*.txt" et pas tous à la date du jour, donc il ne faut pas que je les copie.
Aujourd'hui soit il copie tout, soit rien. Il n'y a pas de trie.
Je te mets mon code si cela peut t'aider.
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include <Date.au3>
Example()
Func Example()
; Crée une constante locale du chemin du fichier qui sera lu.
Local Const $sFilePath = "C:\File*.txt"
Local Const $newFilePath = "C:\Test"
MsgBox($MB_SYSTEMMODAL, "", "test " & $sFilePath)
Local $DateFic = FileGetTime ($sFilePath,1,1)
Local $sDate = StringTrimRight($DateFic, 6)
MsgBox($MB_SYSTEMMODAL, "", "Le(s) fichier(s) " & $sFilePath & " à la date " & $sDate)
MsgBox($MB_SYSTEMMODAL, "", "la date du jour est " & _NowDate() )
Local $iFileExists = FileExists($sFilePath)
; Affiche si le fichier existe ou pas.
If $iFileExists Then
if ($sDate == @YEAR & @MON & @MDAY) Then
MsgBox($MB_SYSTEMMODAL, "", "Le fichier existe." & @CRLF & "FileExist a retourné: " & $iFileExists)
Local $newFileExists = FileCopy ($sFilePath,$newFilePath,$FC_OVERWRITE )
MsgBox($MB_SYSTEMMODAL, "", "Copie du fichier " & $newFileExists)
Else
MsgBox($MB_SYSTEMMODAL, "", "Fichier(s) trop ancien(s)")
EndIf
Else
MsgBox($MB_SYSTEMMODAL, "", "Le fichier n'existe pas." & @CRLF & "FileExist a retourné: " & $iFileExists)
EndIf
EndFunc
#include <FileConstants.au3>
#include <Date.au3>
Example()
Func Example()
; Crée une constante locale du chemin du fichier qui sera lu.
Local Const $sFilePath = "C:\File*.txt"
Local Const $newFilePath = "C:\Test"
MsgBox($MB_SYSTEMMODAL, "", "test " & $sFilePath)
Local $DateFic = FileGetTime ($sFilePath,1,1)
Local $sDate = StringTrimRight($DateFic, 6)
MsgBox($MB_SYSTEMMODAL, "", "Le(s) fichier(s) " & $sFilePath & " à la date " & $sDate)
MsgBox($MB_SYSTEMMODAL, "", "la date du jour est " & _NowDate() )
Local $iFileExists = FileExists($sFilePath)
; Affiche si le fichier existe ou pas.
If $iFileExists Then
if ($sDate == @YEAR & @MON & @MDAY) Then
MsgBox($MB_SYSTEMMODAL, "", "Le fichier existe." & @CRLF & "FileExist a retourné: " & $iFileExists)
Local $newFileExists = FileCopy ($sFilePath,$newFilePath,$FC_OVERWRITE )
MsgBox($MB_SYSTEMMODAL, "", "Copie du fichier " & $newFileExists)
Else
MsgBox($MB_SYSTEMMODAL, "", "Fichier(s) trop ancien(s)")
EndIf
Else
MsgBox($MB_SYSTEMMODAL, "", "Le fichier n'existe pas." & @CRLF & "FileExist a retourné: " & $iFileExists)
EndIf
EndFunc
Re: Récupérer uniquement la date d'un fichier
Une autre question si cela ne te dérange pas.
J'arrive bien à copier mes fichiers mais j'ai un petit soucis.
Je compare la date des fichiers à la date du jour et si elles sont égales alors je copie vers mon nouveau répertoire.
Je dois copier tous les fichiers du jour de type "File*.txt"
Cependant, depuis mon fichier source j'ai plusieurs "File*.txt" et pas tous à la date du jour, donc il ne faut pas que je les copie.
Aujourd'hui soit il copie tout, soit rien. Il n'y a pas de trie.
Je te mets mon code si cela peut t'aider.
Code : Tout sélectionner
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include <Date.au3>
Example()
Func Example()
; Crée une constante locale du chemin du fichier qui sera lu.
Local Const $sFilePath = "C:\File*.txt"
Local Const $newFilePath = "C:\Test"
MsgBox($MB_SYSTEMMODAL, "", "test " & $sFilePath)
Local $DateFic = FileGetTime ($sFilePath,1,1)
Local $sDate = StringTrimRight($DateFic, 6)
MsgBox($MB_SYSTEMMODAL, "", "Le(s) fichier(s) " & $sFilePath & " à la date " & $sDate)
MsgBox($MB_SYSTEMMODAL, "", "la date du jour est " & _NowDate() )
Local $iFileExists = FileExists($sFilePath)
; Affiche si le fichier existe ou pas.
If $iFileExists Then
if ($sDate == @YEAR & @MON & @MDAY) Then
MsgBox($MB_SYSTEMMODAL, "", "Le fichier existe." & @CRLF & "FileExist a retourné: " & $iFileExists)
Local $newFileExists = FileCopy ($sFilePath,$newFilePath,$FC_OVERWRITE )
MsgBox($MB_SYSTEMMODAL, "", "Copie du fichier " & $newFileExists)
Else
MsgBox($MB_SYSTEMMODAL, "", "Fichier(s) trop ancien(s)")
EndIf
Else
MsgBox($MB_SYSTEMMODAL, "", "Le fichier n'existe pas." & @CRLF & "FileExist a retourné: " & $iFileExists)
EndIf
EndFunc
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Récupérer uniquement la date d'un fichier
Bonjour,
Vous ne pouvez pas écrire
Regardez https://www.autoitscript.fr/forum/viewt ... =3&t=14573 ou encore https://www.autoitscript.fr/forum/viewt ... =3&t=14544 dont les posts sont proches de votre problème
Vous ne pouvez pas écrire
Local Const $sFilePath = "C:\File*.txt"
car ce fichier n'existe pas.Regardez https://www.autoitscript.fr/forum/viewt ... =3&t=14573 ou encore https://www.autoitscript.fr/forum/viewt ... =3&t=14544 dont les posts sont proches de votre problème
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: Récupérer uniquement la date d'un fichier
Bonjour Walkson,walkson a écrit : ↑mer. 21 juin 2017 11:31 Bonjour,
Vous ne pouvez pas écrireLocal Const $sFilePath = "C:\File*.txt"
car ce fichier n'existe pas.
Regardez https://www.autoitscript.fr/forum/viewt ... =3&t=14573 ou encore https://www.autoitscript.fr/forum/viewt ... =3&t=14544 dont les posts sont proches de votre problème
Merci pour ta réponse cependant cela fonctionne bien.
Je ne suis peut être pas assez clair :
Dans un dossier j'ai une liste de fichier du type "File*.txt" ("*" peut être un chiffre, des lettres ...).
Je voudrais vérifier qu'un des fichiers de ce type est à la date du jour
Si un fichier de ce type est à la date du jour alors je le copie dans un autre répertoire.
J'ai beaucoup de mal à faire ma vérification sur la date du jour.
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Récupérer uniquement la date d'un fichier
Bonjour,
Il est d'ailleurs impossible de créer un fichier avec ce nom "File*.txt"
En reprenant un exemple dans les liens que je vous avais donnés:
- Je liste tous les fichiers dans le dossier
- En bouclant sur l'array, je contrôle les dates pour une action
Ben là c'est magic
Local Const $sFilePath = "C:\File*.txt"
Local $iFileExists = FileExists($sFilePath)
MsgBox($MB_SYSTEMMODAL, "contrôle", $iFileExists )
Local $iFileExists = FileExists($sFilePath)
MsgBox($MB_SYSTEMMODAL, "contrôle", $iFileExists )
En reprenant un exemple dans les liens que je vous avais donnés:
- Je liste tous les fichiers dans le dossier
- En bouclant sur l'array, je contrôle les dates pour une action
#include <Array.au3>
#include <File.au3>
$sFilePath = @DesktopDir
$aArray = _FileListToArray($sFilePath, "*.txt", $FLTA_FILES, True)
If Not IsArray($aArray) Then Exit MsgBox(0,"","pas trouvé")
_ArrayDisplay($aArray)
For $i = 1 To $aArray[0]
$ArrayTime = FileGetTime ($aArray[$i],$FT_MODIFIED )
If $ArrayTime[2] = @MDAY And $ArrayTime[1] = @MON And $ArrayTime[0] = @YEAR Then
;Action
ConsoleWrite("y a =>" & $aArray[$i] &" "& $ArrayTime[2] &":"& $ArrayTime[1] &":"& $ArrayTime[0] & @CRLF)
;Résultat écrit dans la console
Else
ConsoleWrite("y a pas =>" & $aArray[$i] &" "& $ArrayTime[2] &":"& $ArrayTime[1] &":"& $ArrayTime[0] & @CRLF)
EndIf
Next
#include <File.au3>
$sFilePath = @DesktopDir
$aArray = _FileListToArray($sFilePath, "*.txt", $FLTA_FILES, True)
If Not IsArray($aArray) Then Exit MsgBox(0,"","pas trouvé")
_ArrayDisplay($aArray)
For $i = 1 To $aArray[0]
$ArrayTime = FileGetTime ($aArray[$i],$FT_MODIFIED )
If $ArrayTime[2] = @MDAY And $ArrayTime[1] = @MON And $ArrayTime[0] = @YEAR Then
;Action
ConsoleWrite("y a =>" & $aArray[$i] &" "& $ArrayTime[2] &":"& $ArrayTime[1] &":"& $ArrayTime[0] & @CRLF)
;Résultat écrit dans la console
Else
ConsoleWrite("y a pas =>" & $aArray[$i] &" "& $ArrayTime[2] &":"& $ArrayTime[1] &":"& $ArrayTime[0] & @CRLF)
EndIf
Next
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Récupérer uniquement la date d'un fichier
Pour ce genre de recherche/tri simple, ça peut se faire "à l'ancienne"
Note que dans ce cas, la wildcard est acceptée dans FileFindFirstFile("C:\File*.txt")
Note que dans ce cas, la wildcard est acceptée dans FileFindFirstFile("C:\File*.txt")
$path = @desktopdir& "\"
$newpath = @desktopdir & "\test\"
$hSearch = FileFindFirstFile($path & "File*.txt")
If $hSearch = -1 Then MsgBox(0, "", "rien trouvé")
Local $FileName = "", $n = 0
While 1
$FileName = FileFindNextFile($hSearch)
If @error Then ExitLoop
$sFilePath = $path & $FileName
$DateFic = StringTrimRight(FileGetTime($sFilePath, 1, 1), 6)
If $DateFic = @YEAR & @MON & @MDAY Then
FileCopy($sFilePath, $newpath, 9)
$n += 1
EndIf
WEnd
FileClose($hSearch)
MsgBox(0, "", $n & " nouveaux fichiers copiés")
$newpath = @desktopdir & "\test\"
$hSearch = FileFindFirstFile($path & "File*.txt")
If $hSearch = -1 Then MsgBox(0, "", "rien trouvé")
Local $FileName = "", $n = 0
While 1
$FileName = FileFindNextFile($hSearch)
If @error Then ExitLoop
$sFilePath = $path & $FileName
$DateFic = StringTrimRight(FileGetTime($sFilePath, 1, 1), 6)
If $DateFic = @YEAR & @MON & @MDAY Then
FileCopy($sFilePath, $newpath, 9)
$n += 1
EndIf
WEnd
FileClose($hSearch)
MsgBox(0, "", $n & " nouveaux fichiers copiés")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: Récupérer uniquement la date d'un fichier
mikell a écrit : ↑lun. 26 juin 2017 22:12 Pour ce genre de recherche/tri simple, ça peut se faire "à l'ancienne"
Note que dans ce cas, la wildcard est acceptée dans FileFindFirstFile("C:\File*.txt")
Salut Mikell,$path = @desktopdir& "\"
$newpath = @desktopdir & "\test\"
$hSearch = FileFindFirstFile($path & "File*.txt")
If $hSearch = -1 Then MsgBox(0, "", "rien trouvé")
Local $FileName = "", $n = 0
While 1
$FileName = FileFindNextFile($hSearch)
If @error Then ExitLoop
$sFilePath = $path & $FileName
$DateFic = StringTrimRight(FileGetTime($sFilePath, 1, 1), 6)
If $DateFic = @YEAR & @MON & @MDAY Then
FileCopy($sFilePath, $newpath, 9)
$n += 1
EndIf
WEnd
FileClose($hSearch)
MsgBox(0, "", $n & " nouveaux fichiers copiés")
J'ai testé ton code, il ne trouve jamais de fichier même si je les crée à la main pour être sur qu'il en existe bien un.
As-tu une idée ?
Merci pour ta participation en tout cas.
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Récupérer uniquement la date d'un fichier
Vérifie les chemins, il faut adapter le code avec tes données à toi. Par exemple en mettant les chemins de ton code du post #5 ça donne :
et FileFindFirstFile($path & "File*.txt") détecte les fichiers du genre "C:\File123.txt", "C:\FileABC.txt", etc
$path = "C:\"
$newpath = "C:\test\"
$newpath = "C:\test\"
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: Récupérer uniquement la date d'un fichier
Bonjour mikell,mikell a écrit : ↑mer. 28 juin 2017 21:26 Vérifie les chemins, il faut adapter le code avec tes données à toi. Par exemple en mettant les chemins de ton code du post #5 ça donne :
et FileFindFirstFile($path & "File*.txt") détecte les fichiers du genre "C:\File123.txt", "C:\FileABC.txt", etc$path = "C:\"
$newpath = "C:\test\"
J'ai réussi à faire ce que je voulais encore merci.
J'ai une question tout autre.
Comment puis-je faire pour lister les sous-dossiers d'un dossier avec autoit ?
Merci d'avance
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Récupérer uniquement la date d'un fichier
Pour une recherche sur plusieurs niveaux, regarde dans l'aide la fonction _FileListToArrayRec
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )