IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

affiché les un message popup provenant d'un fichier texte


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    laboratoire
    Inscrit en
    Mai 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : laboratoire
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut affiché les un message popup provenant d'un fichier texte
    Bonjour à tous,

    j'ai une question assez difficile et je ne sais pas si cela est réalisable.

    j'ai un logiciel qui doit fait une action tous X jours automatiquement. cette action génère un fichier texte placé dans un dossier année --> mois .
    exemple C:\Program Files\2022\12 décembre. ce fichier texte va intégré un nom avec la date du jour et l'heure de la réalisation de l'action. exemple "toto121025.txt" pour l'action réalisé le 12 décembre 2022 à 10h25.

    ce que je souhaite c'est créer un fichier bat qui va chercher dans le fichier texte le plus récent les 3 dernières lignes de ce fichier texte.

    alors j'ai déjà essayé de trouver des infos mais pour le moment sans grand succes.

    Voici ce que j'ai trouvé pour chercher le fichier txt le plus réscent dans une arborescence
    find -type f -iname '*.txt' -printf '%T@ %p\0' | sort -z -k1,1rn | awk 'BEGIN{RS="\0"} FNR==1{sub(".* ","");print}'
    et voici ce que j'ai trouvé pour afficher les 5 dernière ligne d'un fichier txt.
    $ tail -n 5 test.txt

    après impossible de lié les deux et il faut bien dire que je ne comprend rien à ces codes.

    si quelqu'un peut m'aider ça serait top.

    merci,

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Bonjour,
    Ceci semble assez facile en powershell.
    Je ne sais pas trop ce qu'est ton code, peut être du Bash Linux...
    Je regarderai lorsque j'aurai un peu de temps si il n'y a pas encore de réponse satisfaisante.

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Voici un exemple simple

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $dossier = "C:\mon dossier"
    $last_n_line = 3
     
    Get-ChildItem -Path "${dossier}\*\*\*.txt" -Force -File | 
    Where-Object {$_.FullName -match '\\\d{4}\\\d{2}\\.+\d{6}\.txt$'} | 
    Sort-Object LastWriteTime -Descending | 
    Select-Object -First 1 | 
    ForEach-Object {
        $lines= $_ | Get-Content | Select-Object -Last $last_n_line
        Write-Host ($lines -join "`n")
    }

    Je considère que les jours, mois, heures et minutes sont sur 2 digits (01, 02, 03..)
    La recherche du plus récent est basé sur la date de dernière modification du fichier
    Si le fichier texte à un encodage spécifique, il n'est pas traité pour le moment
    Les n lignes sont affichées dans la console. Mettre une pause (Read-Host), si lancement "direct".

  4. #4
    Futur Membre du Club
    Homme Profil pro
    laboratoire
    Inscrit en
    Mai 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : laboratoire
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci ericlm128 pour ton aide et je n'ai effectivement pas pensé à Powershell car là je n'y connais vraiment rien. une rapide recherche ma permis de trouver une extension ps1 et j'ai trouvé comment l'exécuté en tache planifié. cependant, il ne m'affiche rien même lors que je lance en direct (clic droit exécution via powershell). Tu pourrais encore m'aider?

    autre chose, je pense que avec ce code, le message apparaitra directement dans powershell mais j'ai besoin de l'afficher directement dans un message pop-up. tu pense que ce type de codage peut fonctionner?

    powershell -WindowStyle hidden -Command "& {[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show(Write-Host ($lines -join "`n"),'WARNING')}"

    merci,

    abouts

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    re,

    Déjà test le code sans tâche planifié pour bien vérifier qu'il fait ce que tu veux.

    Adapte le chemin $dossier et exécute le

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $dossier = "C:\Mon dossier"
    $last_n_line = 3
     
    Get-ChildItem -Path "${dossier}\*\*\*.txt" -Force -File | 
    Where-Object {$_.FullName -match '\\\d{4}\\\d{2}\\.+\d{6}\.txt$'} | 
    Sort-Object LastWriteTime -Descending | 
    Select-Object -First 1 | 
    ForEach-Object {
        $lines= $_ | Get-Content | Select-Object -Last $last_n_line
        [void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
        $null = [System.Windows.Forms.MessageBox]::Show(($lines -join "`n"), "titre", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Exclamation)
    }

  6. #6
    Futur Membre du Club
    Homme Profil pro
    laboratoire
    Inscrit en
    Mai 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : laboratoire
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Alors j'ai réussi à faire fonctionner le powershell et il y a un petit souci. le répertoire est par exemple C:\Program Files\2022\12 décembre et nom C:\Program Files\2022\12
    il semble que lorsque le nom mois est présent le powershell ne fonctionne pas. Tu as une solution?

    merci

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Essaie comme ceci alors
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $dossier = "C:\Mon dossier"
    $last_n_line = 3
     
    Get-ChildItem -Path "${dossier}\*\*\*.txt" -Force -File | 
    Where-Object {$_.FullName -match '\\\d{4}\\\d{2} .+\\.+\d{6}\.txt$'} | 
    Sort-Object LastWriteTime -Descending | 
    Select-Object -First 1 | 
    ForEach-Object {
        $lines= $_ | Get-Content | Select-Object -Last $last_n_line
        [void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
        $null = [System.Windows.Forms.MessageBox]::Show(($lines -join "`n"), "titre", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Exclamation)
    }

    Il est toujours présent ou seulement sur certain ?

  8. #8
    Futur Membre du Club
    Homme Profil pro
    laboratoire
    Inscrit en
    Mai 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : laboratoire
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    le nom du mois est présent sur chaque arborescence contenant le mois. mais là ça fonctionne . merci c'est vrai top

  9. #9
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Tu n'as plus qu'a personnaliser le titre
    Et voir pour le lancer dans un tâche planifier si besoin...

    Mais vu qu'il y a une interaction utilisateur ne vaudrait il mieux pas le lancer à la demande/au besoin ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/06/2009, 15h03
  2. Réponses: 12
    Dernier message: 20/03/2009, 14h01
  3. Réponses: 0
    Dernier message: 20/08/2008, 14h19
  4. Afficher les coordonnées d'un layer dans des champs texte
    Par renaud26 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 15/08/2006, 13h53
  5. Afficher les "nouveaux messages"
    Par k o D dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 07/06/2006, 19h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo