Partage
  • Partager sur Facebook
  • Partager sur Twitter

[POWERSHELL]comment utiliser cette fonction

fonction qui verifie si le fichier est ouvert ou fermé

    4 août 2022 à 11:51:10

    Bonjour,

    j'ai récupérer sur le web cette fonction powershell qui vérifie si le fichier est ouvert ou fermer. Je crois.

    Mais comment on l'utilise cette fonction ? j'ai fait un simple teste qui ne fonctionne pas

    #les fonctions
    
    Function Test-FileLock {
        Param(
            [parameter(Mandatory=$True)]
            [string]$Path
        )
        $OFile = New-Object System.IO.FileInfo $Path
        If ((Test-Path -Path $Path -PathType Leaf) -eq $False) {Return $False}
        Else {
            Try {
                $OStream = $OFile.Open([System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None)
                If ($OStream) {$OStream.Close()}
                Return $False
            } 
            Catch {Return $True}
        }
    }
    
    
    
    
    Test-FileLock ".\fichier.txt"

    C'est supposé retourner false si le fichier est libre , et true s'il est occupé.

    que mon fichier soit ouvert ou fermer il me renvoi toujours false.

    -
    Edité par Deuvool 5 août 2022 à 10:57:15

    • Partager sur Facebook
    • Partager sur Twitter
      4 août 2022 à 13:10:45

      la fonction fonctionne très bien. ton fichier.txt existe bien à l'endroit où tu exécutes ta fonction ?

      Je viens de faire d'autre test et j'ai des résultats différents selon la façon dont j'indique le chemin :(

      -
      Edité par umfred 4 août 2022 à 13:17:25

      • Partager sur Facebook
      • Partager sur Twitter
        5 août 2022 à 9:58:59

        Merci pour le retour :) !

        Je comprends pas, le fichier est bien dans le même répertoire.

        si je lance le fichier tel quel, je ne suis pas admin, j'ai ça et rien d'autre :

        erreur_msg

        Si je lance au travers ISE, lui lancé en tant qu'admin, voila ce que j'ai :

        Les lignes sont complexe. Peut être que j'ai une vieille version de powershell, mais comment savoir ?

        • Partager sur Facebook
        • Partager sur Twitter
          5 août 2022 à 10:22:57

          tu exécutes ton script depuis c:\windows\system32, donc il doit chercher le fichier à cet endroit, si tu te déplaces dans ton dossier avec un

          cd "c:\users\hesch-03603\desktop\SCRIPT\powershell\test fichier ouvert ou fermer" 

          et tu lances le script ça marchera

          ou en mettant le chemin complet du fichier sur ta ligne 23

          mais l'idée c'es plutôt de lancer cette dernière ligne depuis la ligne de commande ou powershell

          • Partager sur Facebook
          • Partager sur Twitter
            5 août 2022 à 11:36:52

            Je suis perdu.

            j'ouvre mon fichier fichier.txt

            Si je met ça :

            cd "c:\users\hesch-03603\desktop\SCRIPT\powershell\test fichier ouvert ou fermer" 
            Test-FileLock ".\fichier.txt"

            J'ai true, mais même si mon fichier est fermer.

            si je met :

            cd "c:\users\hesch-03603\desktop\SCRIPT\powershell\test fichier ouvert ou fermer" 
            Test-FileLock "fichier.txt" 

            Même chose.


            si jet met :

            cd "c:\users\hesch-03603\desktop\SCRIPT\powershell\test fichier ouvert ou fermer" 
            Test-FileLock "c:\users\hesch-03603\desktop\SCRIPT\powershell\test fichier ouvert ou fermer\fichier.txt"

            C'est l'inverse, maintenant j'ai false que se soit ouvert ou fermer.

            J'ai aussi fait ça :

            Test-FileLock ".\fichier.txt"

            juste ça âpres la fonction. Puis j'ai lancé CMD :



            J'ai False que se soit ouvert ou fermer.

            Malheureusement j'arrive toujours pas à faire fonctionner ça.

            J'ai du mal avec la notion de chemin. Pour moi si je lance un programme dans un répertoire, alors le script se passe dans le répertoire. Mais apparemment non ? comment peut on pallier ce problème ? ou bien comme savoir ou le programme se situe quand on le lance ?



            -
            Edité par Deuvool 5 août 2022 à 11:37:51

            • Partager sur Facebook
            • Partager sur Twitter
              5 août 2022 à 11:48:42

              Comme je l'ai dit dans mon de ma 1ère réponse, j'ai le même problème que ton 3ème cas, en indiquant le chemin complet avec c:..

              Je pense qu'il faut récupérer un autre script de test (suffit de rechercher test-filelock powershell dans ton moteur de recherche pour en trouver quelques uns).



              • Partager sur Facebook
              • Partager sur Twitter
                6 août 2022 à 9:50:36

                je crois que c'est bon !

                Le système fonctionne sur les fichiers de type excel, word, ceux qui sont capable de mettre le prochain utilisateur en lecture sur le fichier. Sa tombe bien pour ma finalité c'est un excel.

                Function Test-FileLock {
                    Param(
                        [parameter(Mandatory=$True)]
                        [string]$Path
                    )
                    $OFile = New-Object System.IO.FileInfo $Path
                    If ((Test-Path -Path $Path -PathType Leaf) -eq $False) {Return $True}
                    Else {
                        Try {
                            $OStream = $OFile.Open([System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None)
                            If ($OStream) {$OStream.Close()}
                            Return $true
                        }
                        Catch {Return $False}
                    }
                }
                
                
                do
                {
                    $alea=Get-Random -minimum 1 -Maximum 4
                    sleep -Seconds $alea
                }until(Test-FileLock "C:\Nouveau dossier\test.ods")
                
                write "sortie de la boucle"

                il test, avec un temps aléatoire, jusqu’à ce que le fichier soit libre. Dès que le fichier est dispo pour modification il poursuit le script.

                • Partager sur Facebook
                • Partager sur Twitter

                [POWERSHELL]comment utiliser cette fonction

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown