Question Findstr vs Select-String (Résolu)

Plus d'informations
il y a 14 ans 8 mois #1516 par daniel soares
Réponse de daniel soares sur le sujet Re:findstr vs select-string
je crois qu'en fait sonic veut juste la liste des fichiers modifiés a intervals reguliers
si c'est le cas voici un code un peu plus simple
je n'inclu pas l'envoie du mail

[code:1]
$tempo = 10
$derniercheck = get-date
$rep =\"c:\repertoire_a_tester\\"
$fichierenvoie = \"c:\autrerepertoirequeleprecedent\mail.txt\"


while ($derniercheck -ne $null)
{
start-sleep -s $tempo
get-childitem $rep -r | where {$_.lastwritetime -gt $derniercheck} |
format-table Lastwritetime, Length, name, directoryname -autosize |
out-file $fichierenvoie

$derniercheck = get-date
}
[/code:1]
voila si j'ai bien compris le pb :)
une boucle infinie avec une comparaison entre le parametre lastwritetime des fichiers et la date prise toute les 10 secondes
pour ma part j'utiliserai plutot les taches planifiées que la boucle infinie et je pense que si tu ne peux pas modifier le fichier mail.txt c'est qu'il est utilisé par powershell qui semble tres long a envoyer des mails ca a pris plus de 5 minutes chez moi

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

Plus d'informations
il y a 14 ans 8 mois #1517 par daniel soares
Réponse de daniel soares sur le sujet Re:findstr vs select-string
oui bon mon code etait un peu simpliste
il ne tenait pas compte des fichiers renomés ou supprimés ou créés
donc voici une mise a jour mais je suis sûr qu'on peut faire beaucoup mieux encore
[code:1]
$tempo = 10
$derniercheck = get-date
$rep =\"d:\daniel\\"
$fichierenvoie = \"d:\mail.txt\"
$ancien = get-childitem $rep -r

while ($derniercheck -ne $null)
{
start-sleep -s $tempo
$actuel = get-childitem $rep -r

\"fichiers modifiés\"
$actuel |where {($_.lastwritetime -gt $derniercheck)-and($_.creationtime -lt $derniercheck)} |
format-table Lastwritetime, Length, name, directoryname -autosize -hideTableHeaders

\"fichiers crees\"
$actuel |where {($_.creationtime -gt $derniercheck)} |
format-table Lastwritetime, Length, name, directoryname -autosize -hideTableHeaders

\"fichiers renomés\"
$actuel | where {(($ancien | foreach {$_.name}) -notcontains $_.name)-and ($_.creationtime -lt $derniercheck)}|
format-table Lastwritetime, Length, name, directoryname -autosize -hideTableHeaders

\"fichiers supprimés\"
$ancien |where {((get-childitem $rep -r $_) -eq $null)} |
format-table Lastwritetime, Length, name, directoryname -autosize -hideTableHeaders

$ancien = $actuel
$derniercheck = get-date
}



[/code:1]

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

Plus d'informations
il y a 14 ans 8 mois #1518 par sonic
Réponse de sonic sur le sujet Re:findstr vs select-string
Oula .... j'ai pris un peu de temps pour analyser le code (et une sieste entre) mais oui il semble bien que ce soi ce que je veux faire , deplus ca stocke le chemin ce qui est encore mieux. Par contre oui comme tu la dis j'ai toujours pensé utiliser une tache planifié pour faire cela sachant que l'on ne ma pas demandé d'intervale trop sérrées , 10 minutes pour l'instant. Je vais donc essayer d'adapter le code pour une tache planifié. En fait je pense juste enlever la boucle infinie et mettre la date de fin de script dans un fichier et la remettre dans une variable en debut de script .
Il ne me restera qu'a formater le mail .
Je vais m'y atteler des ce soir.
Bon, c'est pas encore finit mais merci à tous pour toutes ces infos .Bien sur je suis toujours preneur de toutes remarques et autres améliorations et d'ailleure je publirais mes avancements .

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

Plus d'informations
il y a 14 ans 8 mois #1519 par sonic
Réponse de sonic sur le sujet Re:findstr vs select-string
Bon ben c'est pas si simple .
Si je met get-date dans un fichier et que je le remet dans le script (dans une variable avec get-content)quand la tache planifiée le relance, évidement ca fonctionne pas , c'était trop beau . Normal en fait il ne le voit plus comme un objet mais comme du texte donc il ne peut le traiter de cette maniére .
Alors ou je trouve le moyen de le remette en objet ou je laisse tomber la tache planifiée ou je trouve une autre solution ..... a voir .Il y a bien la facon a l'ancienne tout sur le traitement du texte mais ca vas etre fastidieu .:dry: Je vais étudier la question . Deplus ca tournera sur un serveur il faut donc qu'il puisse le lancer sans qu'une session ne soit ouverte .J'ai deja fait ce genre de chose avec les taches planifiées et ca fonctionne . J'ai vu qu'il y avait la possibilité \&quot;au démarrage de mon ordinateur\&quot; .<br><br>Message édité par: sonic31, à: 19/01/08 19:47

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

Plus d'informations
il y a 14 ans 8 mois #1520 par sonic
Réponse de sonic sur le sujet Re:findstr vs select-string
Bonjour,
Bon finalement si je le lance en tache planifiée au démarrage de l'ordinateur non seulement ca fonctionne, je peu garder cette méthode mais en plus je n'ais pas besoin d'ouvrir de session . Je vais donc modifier le code pour les mails et intégrer un log digne de ce nom .
il faudra aussi que je détecte mon script pour pouvoir le surveiller et le relancer le cas échéan .

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

Plus d'informations
il y a 14 ans 8 mois #1521 par daniel soares
Réponse de daniel soares sur le sujet Re:findstr vs select-string
très bonne etude qui me servira surement bientot a moi aussi
mais je n'ai pas la réponse

comment faire pour stocker une collection d'objets tel que \&quot;get-childitem -r monrepertoire\&quot; dans un fichier pour utilisation future?
je sais que \&quot;$newVariable = type nomFichier\&quot; s'en approche mais le type n'est pas le bon

quelqu'un connait il le moyen?<br><br>Message édité par: Dan, à: 20/01/08 19:44

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

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