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 :

Problème après execution d'un Batch


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Full Stack
    Inscrit en
    Mars 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Mars 2013
    Messages : 8
    Par défaut Problème après execution d'un Batch
    Bonjour,
    J'ai executer ce code provenant d'un autre forum (il permet de faire du .net en batch) :

    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
    /*
    @echo off & cls
    for /F %%i in ('dir /B /S ^"%WinDir%\Microsoft.NET\Framework\csc.exe^"') do set csc=%%i
    if /i "%csc%"=="" EXIT
    %csc% /nologo /out:"%~0.exe" %0
    "%~0.exe"
    del "%~0.exe" >NUL 2>&1
    exit
    */
    
    
    using System;
    using System.Runtime.InteropServices;
    
    class TestColor
    {
    const int STD_OUTPUT_HANDLE = -11;
    [DllImportAttribute("Kernel32.dll")]
    private static extern int GetStdHandle( int nStdHandle );
    
    [DllImportAttribute("Kernel32.dll")]
    private static extern int SetConsoleTextAttribute
    (int hConsoleOutput, int wAttributes );
    
    [STAThread]
    static void Main(string[] args)
    {
    for (int i = 1; i < 256; i++)
    {
    Console.WriteLine("BATCH.XOO.IT ");
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);
    
    }
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
    System.Console.ReadLine();
    }
    }
    Or à présent je ne peux plus utliser les commandes net du cmd à partir d'un .bat /.cmd, mais peux toujours les executer manuellement dans le cmd.

    Message d'erreur lors de l'execution du .cmd :

    error CS2001: Source file 'net' could not be found
    fatal error CS2008: No inputs specified
    La syntaxe de cette commande est :

    NET
    [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
    HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |
    STATISTICS | STOP | TIME | USE | USER | VIEW ]
    J'ai lancé Ccleaner pour verifier le registre, il m'indique des DLL Shared manquantes :

    C:\Windows\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.tlb Ox 1000
    C:\Windows\Microsoft.NET\Framework\v1.0.3705\System.tlb Ox 1000
    C:\Windows\Microsoft.NET\Framework\v1.0.3705\Microsoft.JScript.tlb Ox 1000
    C:\Windows\Microsoft.NET\Framework\v1.0.3705\System.EnterpriseServices.tlb Ox 1000
    C:\Windows\Microsoft.NET\Framework\v1.0.3705\System.Drawing.tlb Ox 1000
    C:\Windows\Microsoft.NET\Framework\v1.0.3705\mscorlib.tlb Ox 1000
    C:\Windows\Microsoft.NET\Framework\v1.0.3705\mscoree.tlb Ox 1000
    Je pense vous avoir donner tout ce à quoi j'ai pensé.

    Si quelqu'un sait ce que je peux faire pour résoudre ce problème, je suis preneur

    PS: j'ai lancé un sfc /scannow, cela n'a pas résolu le problème.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Full Stack
    Inscrit en
    Mars 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Mars 2013
    Messages : 8
    Par défaut
    Si j'appelle le .cmd contenant une commande net (en l'occurence net use) à l'aide de la commande call, le .cmd s'execute parfaitement.

    Et si je double clique sur le même .cmd il m'affiche le même message d'erreur que ci dessus, étrange...

    Je persiste à chercher pour essayer de comprendre avant de sans doute devoir restaurer le système

  3. #3
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    salut,

    Commence par controler ta clef de registre
    hkey_classes_root\cmdfile\shell\open\command

    Aussi, il faudrait que tu montres le contenu du script en question pour voir ce qui cloche...

    sinon par hasard, tu l'aurais pas appelé net.cmd ou net.bat ton script du haut ?

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Full Stack
    Inscrit en
    Mars 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Mars 2013
    Messages : 8
    Par défaut
    hkey_classes_root\cmdfile\shell\open\command (reg_SZ) : "%1" %*
    Le contenu du batch c'est ce qui est entre balise code.

    Effectivement le .cmd s'appelait Net.cmd, je viens de le renommer et tout refonctionne normalement.

    Je me doute du pourquoi, mais une petite explication claire est précise ne serait pas de refus.

    En attendant merci beaucoup

  5. #5
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Je parlais du script où tu fais un appel "net use" et non celui-là, mais ça n'a pas d'importance...

    Dans les faits, ton répertoire courant était celui dans lequel y'avait ton script net.cmd, et quand tu faisais un appel "net use" (sans extension donc) Windows sélectionnait le module (pour pas dire l'exécutable) "net" prioritaire du répertoire courant, en l'occurrence net.cmd, qui du coup s'appelait lui même en ligne 5, soit une demande de compilation à csc.exe d'un fichier source nommé "net" (alias %0) qui donc n'existe pas, d'où les deux premières lignes d'erreurs... ensuite en ligne 6 tu fais un appel "%0.exe", soit un appel net.exe, donc comme y'a pas de net.exe dans le répertoire courant, Windows va le chercher dans le path et appeler la commande standard net.exe, et comme y'a pas de paramètre, ça produit le reste des lignes d'erreurs que tu cites, en somme l'aide en ligne.

    À l'inverse, quand le répertoire courant était différent, ton appel "net use" fonctionnait parce que la commande qui était sélectionnée par le système était bien la commande standard justement parce qu'il n'y avait pas d'autre commande du même nom avec laquelle il y aurait pu avoir un conflit.

    Enfin, juste pour info, si tu avais fait un appel explicite "net.exe use" t’aurais pas vu ce problème, mais ça n'aurait pas été pour autant plus "safe"... car le script en question contient à bogue (("à retardement")) qui peut être "dangereux", mais je ne pense pas que ça a été intensionnel, mais plutôt juste mal pensé...

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

Discussions similaires

  1. Réponses: 27
    Dernier message: 21/04/2014, 15h05
  2. Réponses: 1
    Dernier message: 24/04/2008, 15h23
  3. Réponses: 11
    Dernier message: 13/12/2007, 14h34
  4. problème sur la feuille après execution de la macro
    Par vacknov dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2007, 08h16
  5. problème d'affichage après execution d'une macro
    Par ptitemar dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/08/2007, 17h45

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