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 :

Petit script pratique !


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut Petit script pratique !
    Bonjour,

    Je cherche à faire un petit script tout simple (ou peut etre existe-t-il un logiciel tout fait qui fait cela ?) qui fait la chose suivante :

    AFFICHER UNE LISTE de tous les fichiers d'un disque (ex : D:\ ) qui
    * ont les mêmes 16 premiers caractères dans le nom de fichier,
    * ont la même extension,
    * se trouvent dans le même dossier.

    Le tout sous Win XP ...

    Un grand merci d'avance, je rame !

    A+ Bejjj



    Exemple de résultat d'un tel script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    WARNING, the following files have the same first 16 characters :
    C:\ADSQJ\abcdefghijklmnop11.wav
    C:\ADSQJ\abcdefghijklmnop12.wav
    
    C:\TEST1\CCCdefghijklmnop12.wav
    C:\TEST1\CCCdefghijklmnopHELLO.wav

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut
    Je pense avoir trouvé la démarche :

    1/ Lister tous les fichiers d'un dossier précis (sans les sous-dossiers pour l'instant)
    2/ Tronquer le nom de fichier à 16 caractères
    3/ Rechercher les doublons dans cette liste
    4/ Si doublon présent, l'ajouter à la liste qui sera affichée par le programme à la fin
    5/ Recommencer à 1/ pour tous les autres dossiers présents sur le disque

    6/ A la fin , afficher la liste en question!


    Quel langage utiliser pour que ce soit le plus simple à coder ? Sous windows XP...

    EDIT : J'ai l'impression que jscript a l'air adapté... Je viens de créer mon premier script jscript en créant un fichier hello.js avec
    WScript.Echo("Hello, world!"); et ça marche

    EDIT 2 : c'est bien jscript (et pas javascript), ok !


    Merci!!

  3. #3
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    C'est Jscript et non Javascript. Javascript c'est un autre langage mais bref.

  4. #4
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Salut,

    une des solutions possibles 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
    @Echo oFF & setlocal enabledelayedexpansion
    
    For /R "." %%a in (.) do (
       pushd "%%~fa"
          For /F "delims=" %%i in ('dir/a-d/b/o:n') do (
            set "$Base=%%~ni" 
            set "$Subs=!$Base:~16!"
            set $cnt=0
            if defined $subs (
                For /F "delims=" %%o in ('
                    dir /b/a-d "!$Base:~0,16!*%%~xi"
                ') do set /A $cnt+=1
               if !$cnt! gtr 1 echo(%%~fi
            )
          )   
       popd & echo(
    )
    
    Endlocal & Pause
    en rouge: le répertoire source (par défaut c'est le répertoire en cours)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut
    Waw! Super I'm_HERE ! Un grand grand merci !!!
    J'aurais jamais réussi à coder ça...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut
    1/ Léger petit bug : Quand je l'exécute à la racine (ex : D:\ ) avec beaucoup de sous-dossiers, j'ai souvent :

    * des lignes vides où rien ne s'inscrit
    (EDIT : est-ce quand le script change de dossier ? Ligne vide = on passe au dossier suivant ?)

    * des lignes avec écrit "Fichier introuvable", ça correspond à quoi ça ?
    (EDIT : ça correspond aux fichiers ".DS_Store" provenant de fichiers d'un Mac.... Ces fichiers qui commencent directement par l'extension sont apparamment troublants pour le systeme de fichier Windows.... D'où le "Fichier introuvable".... Ou alors ton code en question ne prévoit pas le cas où le nom de fichier commence par un point?)



    2/ Comment diriger la sortie vers un fichier (ex : test.log) au lieu de l'afficher à l'écran ?
    (EDIT : j'ai trouvé : en mode ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    thebatchfile.bat   > test.log
    )

  7. #7
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Salut,

    essayes-ceci, mais pas bien tester, faute de temps

    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
    @Echo off 
    Setlocal Enabledelayedexpansion
    
    set LogFile="%~dp0Log.txt"
    Set PathSrc="D:\"
    
    For /R %PathSrc% %%Z In (.) Do (
      pushd "%%Z"
      title %%Z 
        For /F "delims=" %%a In ('"dir/b/a-d/on 2>Nul"') do (
           Set "$Base=%%a"
           If "!$Base:~0,1!" Neq "." (
              Set "$Base=%%~na"
              Set "$Name=!$Base:~0,16!*%%~xa"
           ) Else Set "$Name=!$Base:~0,16!*"
           Set "$Subs=!$Base:~16!"
           Set  $Cnt=0
           If defined $Subs (
             For %%o In ("%%~fZ\!$Name!") do Set /A $Cnt+=1
             If !$Cnt! gtr 1 echo(%%~fZ\%%a
           )
        )
      popd
    )>>%LogFile%
    
    Endlocal & Pause

Discussions similaires

  1. [Système] Erreur d'exécution d'un petit script
    Par couscoussier dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2006, 10h04
  2. petit script simple
    Par frjover dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/04/2006, 09h31
  3. Aide pour un petit script
    Par perldebutant dans le forum Langage
    Réponses: 4
    Dernier message: 28/03/2006, 21h27
  4. Petit script design :)
    Par MadSoldier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/02/2006, 05h52
  5. petit scripte a faire pour un l'ecole
    Par sircam61 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/12/2005, 14h44

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