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 :

Amélioration de script ?


Sujet :

Scripts/Batch

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Amélioration de script ?
    Bonjour à tous,

    J'ai fait un script de remplacement de chaîne de caractère dans le but de me simplifier le traitement de log, seulement ce script est affreusement lent ...
    je cherche donc des solutions pour optimiser son temps de traitement, si vous avez des conseils, des idées ou des ressources pour m'aider ?

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @echo off
    setLocal EnableDelayedEXpansion
     
    REM Parcours des répertoires et sous répertoires
    for /R %%X in (*.log *.LST) do (
      REM On parcours le fichier
      for /f "delims=" %%a in (%%X) do (
        set str=%%a
        REM Ce nom d’objet existe déjà
        set str=!str:ORA-00955=00955!
        REM On crée un nouveau fichier du type chemin+purge_+nom.extension
        echo !str!>>%%~pXpurge_%%~nxX
      )
    )

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    ton script ne peut guère être améliorer car les fonctions d'E/S sont lentes. Le mieux que tu puisse faire c'est de ne chargé ton fichier de sortie qu'une seule fois par fichier, tu gagnera quand même pas mal de temps.

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
    setLocal EnableDelayedEXpansion
     
    for /r "<Chemin_d'accès>" %%X in (*.log *.LST) do (
      (
            for /f "delims=" %%a in (%%X) do (
                set str=%%a
                set str=!str:ORA-00955=00955!
                echo !str!
           )
      )>>%%~pXpurge_%%~nxX
    )
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci InitSreen de ta réponse,
    sur des gros fichier je vois la différence, mais ça reste extrêmement lent.

    Peut être une idée pour une autre fonction ? Le but principal de la manip étant qu'après le traitement en faisant une recherche sur les "ora-" je ne trouve plus que les erreurs que je n'ai pas remplacé.

  4. #4
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Je vais y réfléchir, ton problème est intéressant mais pas simple. Tu dois avoir beaucoup de fichier et ils doivent êtres de taille importante.
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    J'ai fait quelques tests et il n'est pas possible d'accélérer le trie. Par contre je t'ai fait un petit script pour te faciliter l'opération. Tu doit l'appelé avec la commande "<nom_du_script> /s 00955 /p <path>" pour trier les erreurs de type "00955".

    Code bat : 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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    @echo off
    setlocal enabledelayedexpansion
     
    set "ScriptName=%~n0"
    set "WorkPath=%cd%"
     
    :ParseArgs
    if "%~1"=="" goto Init
    if "%~1"=="/?" goto Help
    if "%~1"=="/s" (
      set "Search=%~2"
      shift /1
      shift /1
      goto ParseArgs
    )
    if "%~1"=="/p" (
      set "WorkPath=%~2"
      shift /1
      shift /1
      goto ParseArgs
    )
    :BadSyntax
    echo.
    for /f "delims=" %%a in ('net helpmsg 87') do echo [ %~1 ] %%a
    echo.
    exit /b 87
     
    :Init
    if not exist "%WorkPath%" (
    	call :UnknowError "%WorkPath%"
    	exit /b 87
    )
    if defined Search goto Exec
    :UnknowError
    if "%~1"=="" (
    	call :BadSyntax "/s"
    ) else (
    	call :BadSyntax "%~1"
    )
    echo.
    call :Help
    exit /b 87
     
    :Exec
    for /r "%WorkPath%" %%a in (*.log *.lst) do (
      echo Fichier en cours: "%%~a".
      rem Le fichier est parsé à la recherche de ora-^%^%Search^%^%
      rem Les éléments trouvé sont placé dans "^%^%~dpatmp_purge_^%^%~nxa"
      rem Le reste est placé dans "^%^%~dpatmp_^%^%~nxa"
      (
        (
    	  for /f "usebackq delims=" %%b in (`type "%%~a"`) do (
    	    echo %%b | find /i "ora-%Search%" >&3
    	    echo %%b | find /i /v "ora-%Search%" >&4
    	  )
    	) 4>>"%%~dpatmp_%%~nxa"
      ) 3>>"%%~dpatmp_purge_%%~nxa"
      rem Le reste est déplacé vers le fichier originale.
      move /y "%%~dpatmp_%%~nxa" "%%~a" 1>nul
      rem Les éléments trouvé sont parsés afin de supprimer la chaîne "ora-"
      for /f "usebackq delims=" %%b in (`type "%%~dpatmp_purge_%%~nxa"`) do (
        set str=%%b
    	set str=!str:ora-%Search%=%Search%!
    	echo !str! >>"%%~dpapurge_%Search%_%%~nxa"
      )
      rem Le fichier temporaire contenant les éléments trouvé est supprimé
      del /q "%%~dpatmp_purge_%%~nxa"
    )
    goto End
     
    :Help
    echo.
    echo %ScriptName% /s ^<motif^> [/p ^<path^>]
    echo %ScriptName% /?
    echo.
    echo     /s ^<motif^>  Définit le motif de recherche.
    echo     /p ^<path^>   Définit le chemin d'accès de la recherche. Si le chemin n'est spécifié 
    echo                 la recherche s'effectue sur le répertoire courrant.
    echo.    /?          Affiche cette aide.
    echo.
     
    :End
    exit /b 0
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour l'idée,
    nous cherchons à éliminer plusieurs erreurs de type ORA du coup faudrait automatiser le lancement de script avec chacune des erreurs, pas forcément intéressant.

    Je pense qu'on va laisser tomber l'idée d'utiliser du batch pour cela, effectivement, même avec recherche/remplacer de notepad, on est plus rapide.

  7. #7
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Le batch ne seras jamais plus rapide que C++ ...
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

Discussions similaires

  1. Amélioration de script
    Par djaibi dans le forum Langage
    Réponses: 1
    Dernier message: 07/11/2011, 20h03
  2. problème d'amélioration de script dans une galerie
    Par lirisnocif dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 24/03/2009, 15h34
  3. [Galerie] Un peu d'aide pour améliorer un script
    Par ambigua dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 21/02/2008, 22h32
  4. Appel d'offre pour une amélioration de script
    Par Hamzaxxx dans le forum Autres
    Réponses: 0
    Dernier message: 05/12/2007, 14h14
  5. Réponses: 6
    Dernier message: 23/01/2007, 17h20

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