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 :

Exécuter un fichier .bat depuis un autre fichier .bat [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut Exécuter un fichier .bat depuis un autre fichier .bat
    Bonjour,
    J'aimerai exécuter un fichier .bat nommé Fichier2.bat stocké sous "C:\Users\franc\Documents\Private\Fichier2.bat" depuis un autre fichier .bat nommé Fichier1.bat

    Je sais comment exécuter une base access depuis un fichier .bat mais je sais pas comment exécuter un fichier .bat
    Voici le code que je connais pour exécuter un fichier .accde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    Start /WAIT msaccess.exe C:\Users\franc\Documents\Private\BDC-ADMIN.accdb"
    @echo off 
    cls
    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 930
    Points : 23 238
    Points
    23 238
    Billets dans le blog
    10
    Par défaut
    Bonjour

    C'est pareil mais il faut utiliser cmd.exe comme exécutable pour faire fonctionner un Batch.

    Le mieux pourtant est de mettre les deux Batchs ensemble en copiant le code de l'un dans l'autre.
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 068
    Points
    43 068
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    call [nom du fichier bat secondaire].bat
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Merci pour vos réponses

    la solution proposée par JML19 ne fonctionne pas, cela m'ouvre une fenêtre qui ne correspond pas à celle du Fichier2.bat
    Nom : Capture.JPG
Affichages : 23140
Taille : 23,8 Ko

    Quant à la solution de Christophe quelle serait la syntaxe avec le chemin ? "C:\Users\franc\Documents\Private\Fichier2.bat"

    En vous remerciant pour votre aide

  5. #5
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 930
    Points : 23 238
    Points
    23 238
    Billets dans le blog
    10
    Par défaut
    Bonjour

    Dans la commande cmd.exe il faut lui associer le fichier batch.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    Du type :
    
    c:\windows\system32\cmd.exe /k c:\titi\toto.bat
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 068
    Points
    43 068
    Par défaut
    C'est pareil mais il faut utiliser cmd.exe comme exécutable pour faire fonctionner un Batch.
    Pas tout à fait. call te permet de rester dans le même contexte d’exécution, tu as donc par exemple accès aux variables du premier batch depuis le second.

    Quant à la solution de Christophe quelle serait la syntaxe avec le chemin ? "C:\Users\franc\Documents\Private\Fichier2.bat"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo "je suis dans fichier1.bat"
    call C:\Users\franc\Documents\Private\Fichier2.bat
    echo "je suis de nouveau dans fichier1.bat"
    En dehors de cela, les indications de JLM sont bonnes.
    Je t'invites à taper :
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    ça donne quoi ce petit batch ?
    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    Start "Launch MS-Access" "C:\Users\franc\Documents\Private\BDC-ADMIN.accdb"
    Exit

  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    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 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Pour savoir comment le lancer au mieux, il faudrait savoir si tu souhaite que le deuxième fichier .bat soit incorporé au premier (tel un label), ou si il est totalement indépendant.

    Incorporé : Call
    Indépendant : cmd.exe peut être avec start.

    D’ailleurs tu as une troisième solution, appelons la Hybride, qui consiste à appeler directement le fichier batch "....\fichier.bat".

  9. #9
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par hackoofr Voir le message

    ça donne quoi ce petit batch ?
    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    Start "Launch MS-Access" "C:\Users\franc\Documents\Private\BDC-ADMIN.accdb"
    Exit
    Bonjour,
    Ce fichier permet de lancer une base Frontal

    le code que j'ai mis plus haut est celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1
    @echo off
    Start /WAIT msaccess.exe C:\Users\franc\Documents\Private\BDC-ADMIN.accdb"
    @echo off 
    cls

  10. #10
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Bonjour,
    En fait je cherchais une solution pour lancer ce fichier.bat appelé "Fichier2" qui permet de cacher un dossier mais lorsque je lance ce bat depuis un autre bat appelé "Fichier1" le dossier apparaît là où est enregistré le bat "Fichier1".
    J'avais prévu de crypter le bat "Fichier1" pour qu'on ne puisse pas connaître le lien qui pointait vers le bat "Fichier2" qui lui contient le scrypt pour cacher ou afficher le dossier.
    Voici ci-dessous le bat "Fichier2"
    Dans le scrypt le nom du dossier qui doit être caché ou visible s'appelle "DossierCache" et le mot de passe est "MotDePasse1234"

    Si qqun à une solution...

    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
    cls
    @ECHO OFF
    title Folder DossierCache
    if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
    if NOT EXIST DossierCache goto MDLOCKER
    :CONFIRM
    echo Etes vous sur de vouloir bloquer les fichiers Y=Oui N=Non(Y/N)
    set/p "cho=>"
    if %cho%==Y goto LOCK
    if %cho%==y goto LOCK
    if %cho%==n goto END
    if %cho%==N goto END
    echo Invalid choice.
    goto CONFIRM
    :LOCK
    ren DossierCache "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
    attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
    echo Folder locked
    goto End
    :UNLOCK
    echo Entrer votre mot de passe pour debloquer le dossier
    set/p "pass=>"
    if NOT %pass%== MotDePasse1234 goto FAIL
    attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
    ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" DossierCache
    echo Bien Bloquer GG
    goto End
    :FAIL
    echo Invalid password
    goto end
    :MDLOCKER
    md DossierCache
    echo DossierCache created successfully
    goto End
    :End

  11. #11
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    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 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Je vois le problème mais ou doit être créer ce dossier caché ? Au même niveau que le fichier2.bat ? ou autre part ?

  12. #12
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    oui c'est ce que je pensai aussi mais lorsque j'ai exécuté le 1er fichier bat qui exécutait le fichier2 qui exécute la commande d'afficher ou faire disparaître le dossier était pourtant stocké dans le même répertoire que le dossier caché et bien c'est là où était stocké le 1er fichier bat que s'affichait le dossier ou disparaissait.
    Idéalement j'aimerai que lorsque le fichier1 soit stocké dans un autre répertoire que celui qui va exécuter le fichier2 et la même chose pour le dossier caché

  13. #13
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    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 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Au secours ! Quelqu'un comprend quelque chose ?

    Bon imaginons ceci :
    c:\toto\fichier1.bat
    c:\tata\fichier2.bat

    Ou est le dossier qui doit être caché ? Tu as trois choix :
    1) dans toto (avec le fichier1.bat)
    2) dans tata (avec le fichier2.bat)
    3) dans un autre dossier, par exemple c:\titi

  14. #14
    Membre habitué
    Homme Profil pro
    007
    Inscrit en
    Octobre 2014
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : 007

    Informations forums :
    Inscription : Octobre 2014
    Messages : 119
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Au secours ! Quelqu'un comprend quelque chose ?
    Oui, j'ai un décodeur

    Oui, donc je disais, dans son script2 (fichier2) il utilise des chemins qui sont relatifs au fichier2,
    or quand il lance sont script2 depuis le script1, le script2 hérite du répertoire courant du script1,
    d'où son problème.

    Donc tout ce qu'il a à faire c'est d'ajouter
    cd /d "%~dp0"
    au début du script2.

  15. #15
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    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 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Si c'est ce qu'il souhaite, mais c'est ce point que je ne n'est pas bien comprit. Son besoin.

  16. #16
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par CTJayce Voir le message
    Oui, j'ai un décodeur

    Oui, donc je disais, dans son script2 (fichier2) il utilise des chemins qui sont relatifs au fichier2,
    or quand il lance sont script2 depuis le script1, le script2 hérite du répertoire courant du script1,
    d'où son problème.

    Donc tout ce qu'il a à faire c'est d'ajouter
    cd /d "%~dp0"
    au début du script2.
    Extra ça fonctionne tip top
    Je ne comprends pas tout, comment peut-on décomposer ce code pour bien comprendre son action ?

    Merci encore !

  17. #17
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    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 183
    Points : 5 754
    Points
    5 754
    Par défaut
    J'évite de me positionner sur le dossier courant, car ça ne fonctionne pas sur les emplacements UNC (réseau).

  18. #18
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Une dernière requête
    J'aimerai crypter le Fichier1.bat qui lance le Fichier2.bat

    J'avais réussi à le faire pour un autre fichier bat qui exécutait une base ACCESS mais cela ne semble pas fonctionner lorsque j'essaye de transformer dans la 1ère étape le Fichier1.bat en Fichier1.vbs
    Le Fichier1.bat ne se transforme pas en fichier1.vbs

    Ce script devait pouvoir transformer le Fichier1.bat en Fichier1.vbs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set test = WScript.CreateObject("WScript.Shell")
    test.Run "C:\Users\franc\Documents\Fichier1.bat", 0, True
    Set test = Nothing
    Pour rappel le Fichier1.bat est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo
    call C:\Users\franc\Documents\Fichier2.bat
    @echo
    Si cette étape fonctionnait le script suivant devait permettre de crypter le code du Fichier1.vbs en le transformant en Fichier1.vbe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set scrEnc = CreateObject("Scripting.Encoder")
    Set scrFSO = CreateObject("Scripting.FileSystemObject")
     
        myfile = scrFSO.OpenTextFile("Fichier1.vbs").ReadAll
        If scrFSO.FileExists("Fichier1.vbe") Then scrFSO.DeleteFile "Fichier1.vbe", True
        myFileEncode=scrENC.EncodeScriptFile(".vbs", myfile, 0, "")
     
        Set ts = scrFSO.CreateTextFile("Fichier1.vbe", True, False)
        ts.Write "'**Start Encode**" + vbcrlf + myFileEncode
    ts.close
    Merci pour votre aide

  19. #19
    Membre habitué
    Homme Profil pro
    007
    Inscrit en
    Octobre 2014
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : 007

    Informations forums :
    Inscription : Octobre 2014
    Messages : 119
    Points : 188
    Points
    188
    Par défaut
    Pour ton message #16, il suffit de taper "cd /?" et après "for /?" sur ta
    ligne de commande pour avoir une explication des plus complètes.

    Citation Envoyé par franckb74 Voir le message
    J'aimerai crypter le Fichier1.bat qui lance le Fichier2.bat
    Cryptage, c'est un très grand mot dans le cas de script encoder. Tout
    au plus de l'obscurcissement. Sinon pourquoi ne pas utiliser l'utilitaire
    screnc.exe, qui est fait pour.

    En ce qui concerne le "script", le dernier, de visu, je ne vois pas trop où
    pourrait être ton problème mis à part une fuite-mémoire potentielle et
    une ligne 5 qui est superflue. Est-ce que ton fichier "vbe" de sortie
    contient bien une chaine encodée ?

    Par contre, dans le script "fichier1.vbs", dans "test.run", avec le
    paramètre "0" au lien de "1" ou +, tu demandes à l'interpréteur vbs de
    lancer "fichier1.bat" en mode invisible. Donc même si "vbe" est généré
    correctement et est lancé correctement, tu ne verras rien et tu ne
    pourras pas interagir avec ton script batch.

    Après, suivant l'environnement d'exécution de tout ça, attention à
    pas trop t'y fier quand même.

  20. #20
    Membre habitué
    Homme Profil pro
    007
    Inscrit en
    Octobre 2014
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : 007

    Informations forums :
    Inscription : Octobre 2014
    Messages : 119
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Si c'est ce qu'il souhaite, mais c'est ce point que je ne n'est pas bien comprit. Son besoin.
    J'allais répondre, mais en fait non, je pense que tu l'as compris.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/02/2016, 14h38
  2. Lire un fichier rb depuis un autre fichier rb
    Par MackValentine dans le forum Ruby
    Réponses: 5
    Dernier message: 27/08/2012, 11h05
  3. Réponses: 1
    Dernier message: 13/07/2010, 06h59
  4. accès à un fichier excel depuis un autre fichier excel
    Par Patnel dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/11/2007, 15h09
  5. appeler la fonction d'un fichier js depuis un autre fichier
    Par kohsaka dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/09/2007, 18h49

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