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 :

Surveiller en permanence l'arrivée d'un fichier dans un dossier partagé


Sujet :

Scripts/Batch

  1. #21
    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
    fichier acr
    C'est quoi un fichier acr ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Par contre moi mon fichier sera vide... et c'est le nom de fichier que Powershell doit récupérer
    Pourquoi pas, ca sera ceci par exemple ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    15.89.pay
    1526.pay
    17,8.pay

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Pardon acr voulait dire "car"

    LE format peut être 8.25.pay pour 8 francs et 25 centimes ou 17.pay pour 17 francs

    MErci

  3. #23
    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
    Comme ceci

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    $dossier = "C:\MonDossierASurveiller"
     
    function Ie_Pay([string] $valeur)
    {
        $ie = New-Object -COMObject InternetExplorer.Application
        $ie.visible = $true
     
        $ie.Navigate("https://ecritf.paytec.ch/")
     
        While ($ie.Busy) {
            Start-Sleep -Milliseconds 500
        }
     
        Start-Sleep -Milliseconds 1000
        $ie.Document.getElementById("amount").value = $valeur
        Start-Sleep -Milliseconds 1000
        $ie.Document.getElementById("pay").Click()
        Start-Sleep -Milliseconds 1000
     
        $ie.quit()
        [void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($ie)
    }
     
    Write-Host "$((Get-Date).ToString()) : Surveillance du dossier $dossier"
    while($true)
    {
        foreach($file in Get-ChildItem -Path ($dossier + "\*.pay"))
        {
            Write-Host "`n`n$((Get-Date).ToString()) : Fichier trouvé $($file.Name)"
            $valeur = $file.BaseName -replace "\.", ","
     
            Write-Host "$((Get-Date).ToString()) : Valeur $valeur"
            [double]$result = 0
            if([double]::TryParse($valeur, [ref] $result))
            {
                Write-Host "$((Get-Date).ToString()) : Valeur valide"
                try
                {
                    Write-Host "$((Get-Date).ToString()) : Traitement dans IE"
                    Ie_Pay -valeur $valeur
                    Write-Host "$((Get-Date).ToString()) : Suppression du fichier"
                    Remove-Item -Path $file.FullName -Force
                    Write-Host "$((Get-Date).ToString()) : Terminée"
                }
                catch
                {
                    Write-Host "$((Get-Date).ToString()) : Une erreur s'est produite !" -ForegroundColor Red
                }
            }
            else
            {
                Write-Host "$((Get-Date).ToString()) : Valeur non valide !" -ForegroundColor Red
            }
        }
        Start-Sleep -Seconds 1
    }
     
    exit

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Magnifique

    Tout fonctionne à merveille !

    Un grand merci

    Pascal

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    En pratique, j'ai un petit problème... Le montant va bien sur le terminal mais il y a un problème lors du paiement... apparemment parce que IE se ferme alors que le paiement n'est pas encore effectué par le client !

    Une idée ?

    Ne pas fermer IE ? Mais que se passe-t-il si on relance le paiement suivant ?

    Merci

  6. #26
    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
    Aucune idée, je ne sais pas comment fonctionne le site.

    Mais ligne 18 peux être remplacée :

    ça
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
     Start-Sleep -Milliseconds 1000
    par
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Start-Sleep -Seconds 30

    Pour attendre 30 secondes

  7. #27
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Parfait je vais tester demain...

    Mais avec mon ancien code dans Access, je n'avais pas ce problème...peut-être une piste à suivre ?

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Private Sub ValeurCarte_LostFocus()
     
    'Déclaration des variables
    Dim winShell As New ShellWindows
    Dim IE As InternetExplorer
    Const stURL As String = "https://ecritf.paytec.ch/"
    Dim IEDoc As HTMLDocument
    Dim InputGoogleZoneTexte As HTMLInputElement
     
    For Each IE In winShell
         If IE.LocationURL = stURL Then Exit For
    Next IE
     
    If Not IE Is Nothing Then
     
      'Affichage de la fenêtre IE
       IE.Visible = True
     
        'On pointe le membre Document
        Set IEDoc = IE.Document
     
        'On pointe notre Zone de texte
        Set InputGoogleZoneTexte = IEDoc.all("amount")
     
        'On définit le texte que l'on souhaite placer à l'intérieur
        InputGoogleZoneTexte.Value = Me.[Valeur Carte]
     
        'On pointe notre bouton
    Set InputGoogleBouton = IEDoc.all("pay")
     
    'On simule un clic
    InputGoogleBouton.Click
     
        End If
     
    'On libère les variables
        Set IE = Nothing
        Set IEDoc = Nothing
     
    End Sub

    Merci... et je suis déjà hyper satisfait du résultat ;-)

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Et petite question supplémentaire... ;-)
    Sur mon PC_1, je vais avoir un code batch et un powershell qui tourne en permanence. Existe-t-il une solution pour éviter la fermeture involontaire de ces fenêtres ?

    Car si un utilisateur ferme l'un des 2, ça pose un problème... Genre si on clique sur la croix pour fermer, qu'on recoive un message qui demande si on veut bien fermer cette fenêtre... Ou alors que pour fermer une de ces 2 fenêtres, on doive faire non pas un simple clic sur la croix mais un double-clic...

    Merci

  9. #29
    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
    Sur mon PC_1, je vais avoir un code batch et un powershell qui tourne en permanence. Existe-t-il une solution pour éviter la fermeture involontaire de ces fenêtres ?
    1) Du coup ton PC_1 à un usage de type plutôt "serveur", laisse le faire son travail sans le déranger.
    2) Tu peux faire un watchdog pour surveiller que tout est correctement lancé, et relancer si besoin.
    3) Si tu veux verrouiller les fenêtres et empêcher la fermeture tu peux les "désactiver" via un programme comme cmdow

    Mais tout ceci est assez archaïque, on se croirait au temps de Windows 98

  10. #30
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Merci Eric

    Et peut-on trouver une solution avec cette explication :

    Code autoit : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    ; Example of external program
    Run("calc")
    WinWait("Calculator")
    $calcHwnd = WinGetHandle("Calculator")
    
    $menu = DllCall("user32.dll","hwnd","GetSystemMenu","hwnd", $calcHwnd, "int",0)
    DllCall("user32.dll", "int", "RemoveMenu", "hwnd", $menu[0] , "int", 0xF060, "int", 0x0);SC_CLOSE
    
    
    
    ; Example with own AutoIt GUI
    $GUI = GuiCreate("Example")
    
    $menu = DllCall("user32.dll","hwnd","GetSystemMenu","hwnd", $GUI, "int",0)
    DllCall("user32.dll", "int", "RemoveMenu", "hwnd", $menu[0] , "int", 0xF060, "int", 0x0);SC_CLOSE
    
    GuiSetState(@SW_SHOW)
    While 1
    ; WE COULD ALSO CHOOSE NOT TO DO ANYTHING UPON A CLOSE EVENT
        sleep(100)
    WEnd

  11. #31
    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
    Oui ce code est de l'Autoit tu peux aussi l'utiliser pour faire ce genre de chose.

  12. #32
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Et ça:


  13. #33
    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
    Oui surement, tu peux installer Visual studio tu va comprendre que ce n'est pas vraiment fait pour ça

  14. #34
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Ok je vais un peu regarder ce mot Autoit sur internet car je n'ai jamais vu ce mot ;-)

  15. #35
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Je peux balancer des lignes de codes que je trouve à propos de autoit dans mon powershell et dans mon batch ?

    Ou alors est-il peut-être plus simple de mettre un code qui cache mes fenêtres powershel et batch ? que les commandes tournent en arrière plan uniquement ?

    Apparemment faire tourner comme "service", ça vous parle ?

    Merci

  16. #36
    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
    Je peux balancer des lignes de codes que je trouve à propos de autoit dans mon powershell et dans mon batch ?
    Non, il faut installé Autoit et notamment l'interpréteur de commande et compilateur

    est-il peut-être plus simple de mettre un code qui cache mes fenêtres Powershell et batch
    Pas sur, je ne comprend pas trop la question.
    Utilise cmdow si besoin.

    Apparemment faire tourner comme "service", ça vous parle ?
    Oui, il y a des programmes qui peuvent t'installer ton script comme service (pseudo service en fait)

  17. #37
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Est-ce possible de mettre à l'intérieur des codes, quelques lignes qui cachent la fenêtre ?

    Je vais cherche un programme pour installer mes script en service et tester..

    Merci

  18. #38
    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
    Est-ce possible de mettre à l'intérieur des codes, quelques lignes qui cachent la fenêtre ?
    Oui utilise cmdow.

    Mais je te déconseille de ne pas les masquer, il est préférable de les désactiver pour quelle ne soit plus "cliquable".
    Sinon ,tu ne va plus savoir ou tu en est.

  19. #39
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Mais je te déconseille de ne pas les masquer ?!?!?!?

    Tu me déconseilles de les cacher plutôt.. non ?

    Et la commande cmdow, se met à intérieur du texte ?

    Merci

  20. #40
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Pfff je ne suis vraiment pas doué...

    L'idéal serait que lorsqu'on clic sur la croix en haut à droite, il demande un mot de passe pour fermer le batch et pareil pour le powershell. Ça éviterait que les utilisateurs les ferme par erreur..

    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/07/2017, 11h32
  2. Réponses: 1
    Dernier message: 12/06/2015, 21h25
  3. Réponses: 26
    Dernier message: 26/03/2010, 15h24
  4. Action à l'arrivée d'un fichier dans un dossier ?
    Par cinezone dans le forum Général Python
    Réponses: 4
    Dernier message: 23/08/2008, 00h55
  5. Pb de comptage de fichiers dans un dossier
    Par oz80 dans le forum Access
    Réponses: 2
    Dernier message: 15/11/2005, 14h26

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