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

C Discussion :

Execution de script batch mais pas ds un .bat :


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut Execution de script batch mais pas ds un .bat :
    Hello,

    Je galere en ce moment sur un truc un peu particulier...
    J'ai un code en C dans lequel je veux executer des commandes batch. Jusque la rien de bien compliqué avec la fonction system().
    Seulement je voudrais executer des script complet en batch avec gestion des variable, if begin, end... etc enfin toutes les commandes dispo pour ecrire un script.

    Donc en gros : je dispose d'un char **cmd bien rempli avec toutes mes commandes, mais bien evidement l'execution a la suite avec system() ne fonctionne pas.

    Si quelqu'un a une idée, ou as deja fais ca.... svp je lutte a mort là.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Billy GunZ
    Seulement je voudrais executer des script complet en batch avec gestion des variable, if begin, end... etc enfin toutes les commandes dispo pour ecrire un script.
    Tu veux faire un interpréteur de script ?

    Il faut la syntaxe et la grammaire du langage script utilisé, et ensuite utiliser des outils comme Lex & Yacc (ou Flex & Bison en version GNU).

    C'est un métier.

    http://sjrd.developpez.com/algorithm...s-syntaxiques/

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut Nan pas vraiment
    En fait je voudrais au moins pouvoir executer un script du genre bidon comme :

    set dhour=%time:~0,2%
    set dmin=%time:~3,2%
    set /A min=dmin+1
    set hour=%dhour%
    if %min%==60 set /A hour=dhour+1
    if %min%==60 set min=00
    if %hour%==24 set hour=00
    at %hour%:%min% C:\Windows\system32\notepad.exe


    mais forcement quand il arrive a la commande at, mes variable valent plus rien...
    Y'a pas moyen d'ecrire ca par ex sur l'entrée std et le faire executer betement après ?
    (je me sens pas trop de tout parsser et réécrire en C derriere...)

  4. #4
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut Solution de porcasse
    Y'a bien un moyen de faire c'que je veux mais c super gore.
    Je pourrais tres bien ecrire toutes mes commandes dans un fichier .bat, style ds le %UserProfile% pour etre sur d'avoir les droits en ecriture, puis executer mon fichier et enfin l'effacer.

    Mais je me refuse de faire une immondicitée pareil...

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par Billy GunZ
    Mais je me refuse de faire une immondicitée pareil...
    Tu vas devoir utiliser un fichier, car la session shell demarre avec l'appel de system() et se termine lorsque system() retourne. Donc si tu fais plusieurs appels a system() l'un apres l'autre, l'appel N+1 sera completement independant de l'appel N.

    De toute facon, si ton programme C n'est qu'une suite d'appels a system(), autant faire un script directement...

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Personnellement, je te conseillerais de faire effectivement cela, mais dans %temp%.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut
    OK si vous voyez que ca, c ptet ce qu'il y a de mieux...

    De toute facon, si ton programme C n'est qu'une suite d'appels a system(), autant faire un script directement...
    En fait mon code s'execute a l'ouverture de session d'un utilisateur et va requeter une base SQL pour recuperer tous les scripts qu'on souhaite faire executer par l'utilisateur en fonction de son groupe, du pc, service etc... plein de parametre quoi.

    Ca permettra par la suite de gerer tous les scripts de demarrage qu'on veut a partir d'une interface web. (en rajouter, supprimer, modifier etc...)

    Outre ceci il fait plein de modif ds la bdr et fichier de conf, donc c pour ca qu'un simple script batch ne me suffit pas...

    Merci pour tout

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

Discussions similaires

  1. [Batch] Executer un script batch via une tâche planifiée
    Par ouinih dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 23/04/2012, 16h42
  2. ssh ou rsh pour executer un script batch (.bat)
    Par simodsio dans le forum Administration système
    Réponses: 5
    Dernier message: 31/03/2009, 10h43
  3. Comment executer un script batch distant à partir de mon poste
    Par arnaudperfect dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 19/11/2007, 12h03
  4. Executer un script batch depuis un DTS package
    Par Nadaa dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/03/2006, 09h14
  5. Applet qui s'execute dans un dossier mais pas dans l'autre
    Par Battosaiii dans le forum Applets
    Réponses: 11
    Dernier message: 10/12/2005, 15h54

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