Question
récuperer les fichiers les plus récents
- Thierry S.
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 19
- Remerciements reçus 0
Voilà mon probleme :
récupere LE fichier le plus récent, je sais faire (avec -last)
mais plusieurs fichiers en meme temps, sic
je dois retrouver une 10zène de fichiers dans un répertoire qui en compte plus de 30 000:blink:
dans mon tout 1er post ici, sur ce forum (cf : ICI ) je devais récuperer les versions de fichiers (c'est l'extention du fichier qui détermine sa version, et elle est aléatoire pour moi) :
NJ_ETAT.*,
NJA_C.*,
K2U_ONC.*,
X01_R.*
dont la date n'excède pas XxX heures et dont le poids ne dépasse pas 2 mo.
Cette partie de script permettait la manoeuvre :
[code:1]$hour = \"+12\" (depuis la valeur est a passer dans read-host)
$mydata = \"c:\PATHSOURCE\"
$jour = get-date
$lastmod = $jour.Addhours(-$hour)
$Files = Get-ChildItem $mydata -include NJ_ETAT.*,NJA_C.*,K2U_ONC.*,
X01_R.* -recurse |Where {$_.LastWriteTime -gt \"$lastmod\"} |Where {$_.length -lt 2000000}
#
foreach ($File in $Files)
{
write-host \"Fichier \" -nonewline; write-host \"$File\" -foregroundcolor \"green\";
}[/code:1]
Les fichiers récupérés passent dans une moulinette pour être imprimés automatiquement.
Le soucis est qu'il arrive que deux fichiers identiques (de version différente) soit générés dans la meme heure...
donc meme en réduisant a la valeur $hour à \"+1\", je me retrouve avec deux fichiers de moins d'une heure, alors qu'il ne me faut que le tout dernier
j'ai bien essayé :[code:1]
$Files = Get-ChildItem $mydata -include NJ_ETAT.*,NJA_C.*,K2U_ONC.*,
X01_R.* -recurse |Where {$_.LastWriteTime -gt \"$lastmod\"} |Where {$_.length -lt 2000000}
| sort LastWriteTime -desc | select -first 1[/code:1]
mais seul le dernier fichier (le plus récent) remonte
en résumé,
j'aimerais récuperer la plus récente version de chaque fichier :
NJ_ETAT.*,
NJA_C.*,
K2U_ONC.*,
X01_R.*
Merci par avance de votre aide ...<br><br>Message édité par: Thierry94, à: 25/04/12 15:19
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Je n'ai pas suivi le post que tu cites, mais je verrai bien l'usage d'un pipe(boucle) imbriqué.mais seul le dernier fichier (le plus récent) remonte
en résumé,
j'aimerais récuperer la plus récente version de chaque fichier :
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Thierry S.
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 19
- Remerciements reçus 0
Thierry94 écrit:
Je n'ai pas suivi le post que tu cites, mais je verrai bien l'usage d'un pipe(boucle) imbriqué.mais seul le dernier fichier (le plus récent) remonte
en résumé,
j'aimerais récuperer la plus récente version de chaque fichier :
Bonsoir & Merci pour l'interet que tu portes a mon prb.
En clair (oui désolé, je m'exprime peut-etre mal)
par exemple :
Dans un dossier X de 30000 fichiers (ou plusieurs fichiers portent le meme nom et où seul l'extension permet de les différencier)
j'ai souhaité récupérer les fichiers commençant par toto*,tata*,titi* de - de 2mo
ça donne comme syntaxe :
$lastmod = $jour.Addhours(-$hour)
($hour est égal à 1heure --> \"+1\")
$Files = Get-ChildItem $mydata -include Toto.*,Titi.*,Tata.* -recurse
|Where {$_.LastWriteTime -gt \"$lastmod\"} |Where {$_.length -lt 2000000}
je récupere :
Toto.111 25-04-2012 11h20
Tata.123 25-04-2012 11h20
Titi.456 25-04-2012 11h20
Toto.142 25-04-2012 11h28
Celui en rouge (Toto.111) pose probleme car la version du fichier la plus récente est celle portant l'extension .142 (de 11h28)
donc dans un dossier contenant des fichiers portant le meme \"radical\" et où seul l'extention permet de les reconnaitre (et l'heure de création biensur), il me faut le plus récent (le tout dernier et nuiquement lui ) de chaque \"radical\"...
Connexion ou Créer un compte pour participer à la conversation.
- Thierry S.
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 19
- Remerciements reçus 0
en faisant ça !:
[code:1]Get-ChildItem \"$mydata\*\" -EA SilentlyContinue -include toto.* |Where {$_.LastWriteTime -gt \"$lastmod\"} |Where {$_.length -lt 2000000} | sort LastWriteTime -desc | select -first 1 | Copy-Item -Destination $pathcopyAF
Get-ChildItem \"$mydata\*\" -EA SilentlyContinue -include tata.* |Where {$_.LastWriteTime -gt \"$lastmod\"} |Where {$_.length -lt 2000000} | sort LastWriteTime -desc | select -first 1 | Copy-Item -Destination $pathcopyAF
#
$FilesAF = Get-ChildItem \"$pathcopyAF\*\"
If ($FilesAf -eq $Null)
{[/code:1]
j'ai séparé chaque recherche de fichier....
Si quelqu'un a mieux, j'suis preneur...
Connexion ou Créer un compte pour participer à la conversation.
- Thierry S.
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 19
- Remerciements reçus 0
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Dans ce cas il faut fournir un jeux de test, ou un script de génération d'un jeux de test.Si quelqu'un a mieux, j'suis preneur...
A mon avis, bien que ce soit une solution et qu'on peut s'en contenter, l'approche du copier /coller est à bannir. Sa seule fonction est de nous transformer en perroquet
co co ...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- récuperer les fichiers les plus récents