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 :

The process cannot access the file because it is being used by another process. [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut The process cannot access the file because it is being used by another process.
    Bonjour.

    je n'arrive pas à debuguer ce court script :
    Code batch : 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
    @echo off
     
    set logs="logs_tests.txt"
    if exist %logs% (del %logs%)
     
    call :FONCTION_TIME  >> %logs%
    echo Debut du test - %JOUR%/%MOIS%/%ANNEE% %HEURE%:%MINUT% >> %logs%
     
     
    if "%1"=="" (goto ERROR_PARAM) else (set "civilite=%1")
     
    echo "A1" >> %logs%
     
    if "%civilite%"=="Bonjour" 
    	(echo "%civilite%" >> %logs%) 
    else 
    	(echo "Tu pourrais dire bonjour" >> %logs%)
     
    echo Fin du test - %JOUR%/%MOIS%/%ANNEE% %HEURE%:%MINUT% >> %logs%
     
    goto END
     
    :FONCTION_TIME
    rem Constitution de la date d execution
    rem  Il faut faire attention a la valeur de tokens (elle est a 1 pour win. serveur2003 et a 2 pour win 2000)
    for /f "tokens=1" %%i in ('date /t') do set DATEJ=%%i
    set DATEJ=%DATEJ:/=%
    set JOUR=%DATEJ:~0,2%
    set MOIS=%DATEJ:~2,2%
    set ANNEE=%DATEJ:~4,4%
    rem Constitution de l'heure et minute d execution
    for /f "tokens=1" %%i in ('time /t') do set TIMEJ=%%i
    set TIMEJ=%TIMEJ:/=%
    set HEURE=%TIMEJ:~0,2%
    set MINUT=%TIMEJ:~3,2%
     
    :ERROR_PARAM
    ECHO "Parametre attendu : ProduitLogicielVersion" >> %logs%
    goto END
     
    :END
    call :FONCTION_TIME
    echo Fin du packaging - %JOUR%/%MOIS%/%ANNEE% %HEURE%:%MINUT% >> %logs%
    rem on affiche le fichier de log dans la console
    exit /B 0

    La console m'affiche :
    The process cannot access the file because it is being used by another process.
    Et le fichier de log logs_tests.txt ne contient que :
    Terminate batch job (Y/N)?
    Pouvez vous m'aider SVP ?

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bonjour,

    J'ai l'impression que ta fonction :FONCTION_TIME tourne en boucle à cause du call dans le label :END

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Bonjour barnabe.

    effectivement, il y a une fonction qui boucle.

    Comment l'arrêter sans la supprimer ?

    J'ai en plus un syntaxe incorrecte à ce niveau :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if "%civilite%==Bonjour" 
    	(echo "%civilite%" >> %logs%) 
    else 
    	(echo "Tu pourrais dire bonjour" >> %logs%)

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Essaie comme ça :
    Code batch : 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
    @echo off
    setlocal enabledelayedexpansion
     
    set logs="logs_tests.txt"
    if exist %logs% (del %logs%)
     
    call :FONCTION_TIME >> %logs%
    echo Debut du test - !JJMMAAAA! !HHMM! >> %logs%
     
    if "%~1"=="" (goto ERROR_PARAM) else (set "civilite=%~1")
     
    echo "A1" >> %logs%
     
    (if /i "!civilite!"=="Bonjour" (echo "!civilite!") else (echo "Tu pourrais dire bonjour")) >> %logs%
     
    echo Fin du test - !JJMMAAAA! !HHMM! >> %logs%
     
    goto END
     
    :ERROR_PARAM
    ECHO "Parametre attendu : ProduitLogicielVersion" >> %logs%
     
    :END
    call :FONCTION_TIME
    echo Fin du packaging - !JJMMAAAA! !HHMM! >> %logs%
    rem on affiche le fichier de log dans la console
    exit /B 0
     
    :FONCTION_TIME
     
    rem Constitution de la date d execution
    for /f "tokens=1-2" %%i in ('date /t') do if not "%%j"=="" (set "JJMMAAAA=%%j") else (set "JJMMAAAA=%%i")
     
    rem Constitution de l'heure et minute d execution
    for /f "tokens=1" %%i in ('time /t') do set "HHMM=%%i"
    set "HHMM=!HHMM:/=:!"
     
    GOTO :EOF

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Tu m'épates.

    Tu peux me donner quelques explications sur ce qui marchait mal et pourquoi ça marche maintenant STP ?

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Comme déjà dit, le gros point noir était la fonction qui se baladait en plein milieu du script, sans commande pour en sortir (goto :eof ou bien exit), avec une combinaison bizarre de call et goto qui formaient une boucle infinie.

    Une fois les legos remis dans l'ordre, j'ai fait quelques optimisations sans grande importance à part peut-être au niveau de la variable civilite et %1, connais-tu la différence entre %1 et %~1 ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/02/2016, 09h27
  2. Réponses: 0
    Dernier message: 31/03/2014, 13h09
  3. Réponses: 5
    Dernier message: 23/04/2013, 01h41
  4. The process cannot access the file.
    Par GoTrUnKo dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/01/2009, 17h06
  5. The process cannot access the file 'xyz' ..
    Par dsolheid dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 21/04/2008, 11h45

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