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 :

Optimisation de code


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2018
    Messages : 18
    Par défaut Optimisation de code
    je souhaite optimiser mon code sans fichier Texte sauf les fichier AVS et script.vcf
    mai je veut que quand un dossier a déjà des phots il passe au suivant. comme les ISO et les MP4 MERCI.
    \%%I\*.jpeg


    Code : 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
    @ECHO OFF
    
    echo effacement des ancien fichiers
    
    if exist "file_list.txt" del /s "file_list.txt"
    if exist "script.vcf" del /s "script.vcf"
    if exist "*.avs" del /s "*.avs"
    
    echo creation de la liste des mp4
    
    dir *.mp4 /B>file_list.txt
    
    echo creation des fichiers AVS
    
    for /F "delims=;" %%I in (file_list.txt) do echo DirectShowSource("%%I")>> %%I.avs
    
    echo effacement des ancien fichiers
    
    if exist "file_list.txt" del /s "file_list.txt"
    
    echo création de la liste des mp4 sans extemsion
    
    for %%i in (*.mp4) do @echo %%~ni>>file_list.txt
    
    echo creation des dossiers qui porte de même nom que les mp4 mai sans mp4
    
    for /F "delims=;" %%I in (file_list.txt) do md "%%I"
    
    echo création du fichier script.vcf qui comtien les AVS pour sortir des photos
    
    for /F "delims=;" %%I in (file_list.txt) do echo VirtualDub.video.SetFrameRate(0,300); VirtualDub.Open("%%I.mp4.avs","",0,"EAAAAAAAAAAB////gAAAAA==");VirtualDub.SaveImageSequence("%%I\\", ".jpeg", 4, 2, 95);  >> script.vcf
    vdub.exe /x /i "script.vcf"
    
    echo creation du dossier Photos
    
    if not exist "Photos" md Photos
    
    echo déplacement des dossier photos dans le dossier photos.
    
    for /F "delims=;" %%I in (file_list.txt) do move /Y "%~dp0%%I" "Photos\%%I"
    
    echo effacement des fichiers temporaire
    
    if exist "script.vcf" del /s "script.vcf"
    if exist "file_list.txt" del /s "file_list.txt"
    dir *.avs /B /O:N > file_list.txt
    for /F "delims=;" %%I in (file_list.txt) do del "%%I"
    if exist "file_list.txt" del /s "file_list.txt"

  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
    Voilà une première optimisation :

    Code : 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
    @ECHO OFF
    setlocal enableextensions
    
    call :effacement
    
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (
    	if not exist "%%~nI" (md "%%~nI")
    	echo DirectShowSource("%%~I")>> %%~nI.avs
    	echo VirtualDub.video.SetFrameRate(0,300); VirtualDub.Open("%%~nI.avs","",0,"EAAAAAAAAAAB////gAAAAA==");VirtualDub.SaveImageSequence("%%~nI\\", ".jpeg", 4, 2, 95);  >> script.vcf
    )
    
    vdub.exe /x /i "script.vcf"
    
    if not exist "Photos" (md Photos)
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (move /Y "%~dp0%%~nI" "Photos\%%~nI")
    
    call :effacement
    
    pause
    exit
    
    :effacement
    if exist "script.vcf" (del /f /s "script.vcf")
    if exist "*.avs" (del /s /f /q "*.avs")
    goto :eof
    
    rem
    mai je veut que quand un dossier a déjà des phots il passe au suivant
    Tu parles de quel dossier exactement ? Ce n'est pas très clair.

  3. #3
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2018
    Messages : 18
    Par défaut
    Citation Envoyé par barnabe0057 Voir le message
    Voilà une première optimisation :

    Code : 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
    @ECHO OFF
    setlocal enableextensions
    
    call :effacement
    
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (
    	if not exist "%%~nI" (md "%%~nI")
    	echo DirectShowSource("%%~I")>> %%~nI.avs
    	echo VirtualDub.video.SetFrameRate(0,300); VirtualDub.Open("%%~nI.avs","",0,"EAAAAAAAAAAB////gAAAAA==");VirtualDub.SaveImageSequence("%%~nI\\", ".jpeg", 4, 2, 95);  >> script.vcf
    )
    
    vdub.exe /x /i "script.vcf"
    
    if not exist "Photos" (md Photos)
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (move /Y "%~dp0%%~nI" "Photos\%%~nI")
    
    call :effacement
    
    pause
    exit
    
    :effacement
    if exist "script.vcf" (del /f /s "script.vcf")
    if exist "*.avs" (del /s /f /q "*.avs")
    goto :eof
    
    rem

    Tu parles de quel dossier exactement ? Ce n'est pas très clair.
    en faite parfois il y a un espace a la fin des mp4 du coup mon script s' arrête quand je le relance je ne veut pas que il extrait les photos déjà extraite.

    donc mon script fait sa

    a\01.jpeg
    a\02.jpeg
    etc etc

    je veut que si il y a des photos dans un des dossier il passe direct au suivant.

    j 'ai tester sa ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DirectShowSource("fichier1.mp4"
    au lieu de sa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DirectShowSource("fichier1.mp4")
    et j ai sa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VirtualDub.vidéo.SetFrameRate(0,300); VirtualDub.Open("%I.avs","",0,"EAAAAAAAAAAB////gAAAAA==");VirtualDub.SaveImageSequence("%I\\", ".jpeg", 4, 2, 95);
    au lieu de sa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VirtualDub.video.SetFrameRate(0,300); VirtualDub.Open("nom du fichier.mp4.avs","",0,"EAAAAAAAAAAB////gAAAAA==");VirtualDub.SaveImageSequence("dossier qui porte de nom du fichier sans extension\\", ".jpeg", 4, 2, 95);
    et j'ai ce message d’erreur :
    VirtualDub CLI Video Processor Version 1.6.15 (build 24600/release) for 80x86
    Copyright (C) Avery Lee 1998-2006. Licensed under GNU General Public License

    Cannot open file "~nI.avs":
    Le fichier spÚcifiÚ est introuvable.

    voila j'ai modifier comme sa et la sa marche.

    Code : 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
    @ECHO OFF
    setlocal enableextensions
    call :effacement
    if exist "script.vcf" del /s "script.vcf"
    if exist "*.avs" del /s "*.avs"
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do echo DirectShowSource("%%I")>> %%~nI.avs
    for /F "delims=;" %%I in ('dir *.mp4 /B') do (
    if not exist "%%~nI" (md "%%~nI"))
    for /F "delims=;" %%I in ('dir *.avs /B') do echo VirtualDub.video.SetFrameRate(0,300); VirtualDub.Open("%%I","",0,"EAAAAAAAAAAB////gAAAAA==");VirtualDub.SaveImageSequence("%%~nI\\", ".jpeg", 4, 2, 95);  >> script.vcf
    vdub.exe /x /i "script.vcf"
    if not exist "Photos" (md Photos)
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (move /Y "%~dp0%%~nI" "Photos\%%~nI")
    call :effacement
    exit
    :effacement
    if exist "script.vcf" (del /f /s "script.vcf")
    if exist "*.avs" (del /s /f /q "*.avs")
    goto :eof

  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
    Les petites erreurs que tu obtiens sont dûes aux parenthèses qui se mélangent aux parenthèses de la boucle FOR, il suffit de les échapper pour régler le problème :


    Code : 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
    @ECHO OFF
    setlocal enableextensions
    
    call :effacement
    
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (
    	if not exist "%%~nI" (md "%%~nI")
    	echo DirectShowSource^("%%~I"^) >> %%~nI.avs
    	echo VirtualDub.video.SetFrameRate^(0,300^); VirtualDub.Open^("%%~nI.avs","",0,"EAAAAAAAAAAB////gAAAAA=="^);VirtualDub.SaveImageSequence^("%%~nI\\", ".jpeg", 4, 2, 95^); >> script.vcf
    )
    
    vdub.exe /x /i "script.vcf"
    
    if not exist "Photos" (md Photos)
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (move /Y "%~dp0%%~nI" "Photos\%%~nI")
    
    call :effacement
    
    pause
    exit
    
    :effacement
    if exist "script.vcf" (del /f "script.vcf")
    if exist "*.avs" (del /f /q "*.avs")
    goto :eof
    
    rem
    Je reviens après avec la suite

  5. #5
    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
    Voilà la version finale :

    Code : 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
    @ECHO OFF
    setlocal enableextensions
    chcp 1252 >nul
    
    call :effacement
    
    echo. & echo ### Création du script VirtualDub à partir des fichiers AVS
    echo.
    
    for /F "delims=;" %%I in ('2^>nul dir "*.mp4" /B') do (
    	if not exist "%%~nI" (md "%%~nI")
    	if not exist "%%~nI\*.jpeg" (
    		echo # %%~nI.avs
    		echo DirectShowSource^("%%~I"^) >> "%%~nI.avs"
    		echo VirtualDub.video.SetFrameRate^(0,300^); VirtualDub.Open^("%%~nI.avs","",0,"EAAAAAAAAAAB////gAAAAA=="^);VirtualDub.SaveImageSequence^("%%~nI\\", ".jpeg", 4, 2, 95^); >> "script.vcf"
    	)
    )
    
    echo. & echo ### Traitement VirtualDub en cours ...
    echo.
    
    vdub.exe /x /i "script.vcf"
    
    if not exist "Photos" (md Photos)
    
    echo. & echo ### Déplacement des dossiers photos en cours ...
    echo.
    
    for /F "delims=;" %%I in ('2^>nul dir "*.mp4" /B') do (
    echo # %%~nI
    >nul move /Y "%~dp0%%~nI" "Photos\%%~nI"
    )
    
    call :effacement
    
    echo. & pause
    exit
    
    :effacement
    if exist "script.vcf" (del /f "script.vcf")
    if exist "*.avs" (del /f /q "*.avs")
    goto :eof
    
    rem
    Comme demandé, si le dossier contient déjà des photos il passe au dossier suivant.

  6. #6
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2018
    Messages : 18
    Par défaut
    Citation Envoyé par barnabe0057 Voir le message
    Les petites erreurs que tu obtiens sont dûes aux parenthèses qui se mélangent aux parenthèses de la boucle FOR, il suffit de les échapper pour régler le problème :


    Code : 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
    @ECHO OFF
    setlocal enableextensions
    
    call :effacement
    
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (
    	if not exist "%%~nI" (md "%%~nI")
    	echo DirectShowSource^("%%~I"^) >> %%~nI.avs
    	echo VirtualDub.video.SetFrameRate^(0,300^); VirtualDub.Open^("%%~nI.avs","",0,"EAAAAAAAAAAB////gAAAAA=="^);VirtualDub.SaveImageSequence^("%%~nI\\", ".jpeg", 4, 2, 95^); >> script.vcf
    )
    
    vdub.exe /x /i "script.vcf"
    
    if not exist "Photos" (md Photos)
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (move /Y "%~dp0%%~nI" "Photos\%%~nI")
    
    call :effacement
    
    pause
    exit
    
    :effacement
    if exist "script.vcf" (del /f "script.vcf")
    if exist "*.avs" (del /f /q "*.avs")
    goto :eof
    
    rem
    Je reviens après avec la suite
    regarde ce code marche bien mai je veut que au niveau du fichier script.vcf que il cree les ligne que quand il y a pas des photos dans les dossiers.

    mon code qui marche :

    Code : 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
    @ECHO OFF
    setlocal enableextensions
    call :effacement
    if exist "script.vcf" del /s "script.vcf"
    if exist "*.avs" del /s "*.avs"
    for /F "delims=;" %%I in ('dir *.mp4 /B') do (
    echo DirectShowSource^("%%~I"^)>> %%~nI.avs 
    if not exist "%%~nI" (md "%%~nI")
    )
    for /F "delims=;" %%I in ('dir *.avs /B') do echo VirtualDub.video.SetFrameRate(0,300); VirtualDub.Open("%%~I","",0,"EAAAAAAAAAAB////gAAAAA==");VirtualDub.SaveImageSequence("%%~nI\\", ".jpeg", 4, 2, 95);  >> script.vcf
    vdub.exe /x /i "script.vcf"
    if not exist "Photos" (md Photos)
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (move /Y "%~dp0%%~nI" "Photos\%%~nI")
    call :effacement
    exit
    :effacement
    if exist "script.vcf" (del /f /s "script.vcf")
    if exist "*.avs" (del /s /f /q "*.avs")
    goto :eof
    voila ce code marche mai dans le IF il va juste voir si mon fichier script.vcf et non les jpeg.
    moi je veut que si des jpeg exist dans un des dossier il ne crée pas une ligne supplémentaire dans le fichier script.vcf.

    Code : 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
    setlocal enableextensions
    call :effacement
    for /F "delims=;" %%I in ('dir *.mp4 /B') do (
    echo DirectShowSource^("%%~I"^)>> %%~nI.avs
    if exist "\%%I\0*.jpeg" echo VirtualDub.video.SetFrameRate^(0,300^); VirtualDub.Open^("%%~nI.avs","",0,"EAAAAAAAAAAB////gAAAAA=="^);VirtualDub.SaveImageSequence^("%%~nI\\", ".jpeg", 4, 2, 95^); >> script.vcf
    if not exist "%%~nI" (md "%%~nI")
    )
    vdub.exe /x /i "script.vcf"
    if not exist "Photos" (md Photos)
    for /F "delims=;" %%I in ('dir "*.mp4" /B') do (move /Y "%~dp0%%~nI" "Photos\%%~nI")
    call :effacement
    exit
    :effacement
    if exist "script.vcf" (del /f /s "script.vcf")
    if exist "*.avs" (del /s /f /q "*.avs")
    goto :eof

  7. #7
    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
    Bonsoir,

    J'ai fait mon test avec des fichiers texte, et j'ai juste oublié de re-modifier en jpeg, c'est pour ça que ça ne marche pas.
    Il suffit de modifier 3 lettres :

    Code : 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
    @ECHO OFF
    setlocal enableextensions
    chcp 1252 >nul
    
    call :effacement
    
    echo. & echo ### Création du script VirtualDub à partir des fichiers AVS
    echo.
    
    for /F "delims=;" %%I in ('2^>nul dir "*.mp4" /B') do (
    	if not exist "%%~nI" (md "%%~nI")
    	if not exist "%%~nI\*.jpeg" (
    		echo # %%~nI.avs
    		echo DirectShowSource^("%%~I"^) >> "%%~nI.avs"
    		echo VirtualDub.video.SetFrameRate^(0,300^); VirtualDub.Open^("%%~nI.avs","",0,"EAAAAAAAAAAB////gAAAAA=="^);VirtualDub.SaveImageSequence^("%%~nI\\", ".jpeg", 4, 2, 95^); >> "script.vcf"
    	)
    )
    
    echo. & echo ### Traitement VirtualDub en cours ...
    echo.
    
    vdub.exe /x /i "script.vcf"
    
    if not exist "Photos" (md Photos)
    
    echo. & echo ### Déplacement des dossiers photos en cours ...
    echo.
    
    for /F "delims=;" %%I in ('2^>nul dir "*.mp4" /B') do (
    echo # %%~nI
    >nul move /Y "%~dp0%%~nI" "Photos\%%~nI"
    )
    
    call :effacement
    
    echo. & pause
    exit
    
    :effacement
    if exist "script.vcf" (del /f "script.vcf")
    if exist "*.avs" (del /f /q "*.avs")
    goto :eof
    
    rem

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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