Batch, choix de repertoire!

(@)-JYX8X8-(@) Messages postés 4817 Date d'inscription   Statut Contributeur Dernière intervention   -  
 jemaid38 -
Salut à tous,

une petite question de batch :)

Voila j'ai fait un batch qui cherche des ligne dans des fichiers de logs pour les mettre dans un txt, ca fonctionne tres bien.

mon probleme c'est qu'il faut mettre forcement le bat dans le répertoire courant avec les fichiers de logs.

J'aimerais une solution qui me permettrai d'ouvrir une fenêtre explorateur (genre ouvrir), pour sélectionner le répertoire contenant les logs a la souris depuis n'importe que position du bat.

taper le chemin a la main n'est pas viable.

merci de votre aide :)
--
Le savoir est universel et doit être partagé par tous, les échanges nous enrichissent.
(@)-JYX8X8-(@) ou JYX pour pas se prendre la tête ^^

1 réponse

  1. Quester4 Messages postés 150 Statut Membre 126
     
    Bonsoir,

    Tu ne peux pas avoir ces petites fenêtres où tu fais défiler pour avoir ton dossier. Par contre, tu peux faire comme ceci :
    set chemin=C:\
    
    :choix
    set dossier=
    dir %chemin%
    echo.
    echo N'entrez pas de "\", choisissez un seul dossier a la fois.
    echo (Entree pour valider)
    set /p dossier=Dossier : 
    if "%dossier%"=="" goto :next
    set %chemin%=%chemin%\%dossier%
    goto :choix
    
    :next
    echo Dossier choisi : %chemin%
    REM ...

    Je précise que ça se fait en console : ça affiche la liste des répertoires dans un dossier, et l'utilisateur choisit le répertoire à chaque fois, un par un. À noter que les fichiers sont aussi affichés par la commande Dir... Pour afficher seulement les dossiers, il faudrait faire une différence, un peu comme ceci :
    for /f "tokens=*" %%a in ('dir "%chemin%" /A-D') do (
      for /f "tokens=*" %%n in ('dir "%chemin%"') do if not %%a==%%n echo %%n
    )

    À noter que je ne suis pas sûr du bon fonctionnement de ces codes, n'ayant pas pu les tester.

    En espérant t'avoir aidé,
    Quester4
    1
    1. (@)-JYX8X8-(@) Messages postés 4817 Date d'inscription   Statut Contributeur Dernière intervention   428
       
      merci pour ta réponse :)

      Je test ca.
      0
    2. greg6614 Messages postés 629 Statut Membre 107
       
      Salut, tu peux faire ceci :

      @echo off
      mode con:cols=90 lines=12
      title -==*==- Batch FolderBrowserDialog -==*==-
      (
      echo Option Explicit
      echo.
      echo WScript.Echo BrowseFolder^( "My Computer", False ^)
      echo.
      echo Function BrowseFolder^( myStartLocation, blnSimpleDialog ^)
      echo    Const MY_COMPUTER  = ^&H11^&
      echo    Const WINDOW_HANDLE = 0
      echo.
      echo    Dim numOptions, objFolder, objFolderItem
      echo    Dim objPath, objShell, strPath, strPrompt
      echo.
      echo    strPrompt = "Où voulez vous enregistrer le fichier:"
      echo    If blnSimpleDialog = True Then
      echo       numOptions = 0
      echo    Else
      echo       numOptions = ^&H10^&
      echo    End If
      echo.   
      echo    Set objShell = CreateObject^( "Shell.Application" ^)
      echo.
      echo    If UCase^( myStartLocation ^) = "%userprofile%" Then
      echo       Set objFolder = objShell.Namespace^( MY_COMPUTER ^)
      echo       Set objFolderItem = objFolder.Self
      echo       strPath = objFolderItem.Path
      echo    Else
      echo       strPath = myStartLocation
      echo    End If
      echo.
      echo    Set objFolder = objShell.BrowseForFolder^( WINDOW_HANDLE, strPrompt, _
      echo                                              numOptions, strPath ^)
      echo    If objFolder Is Nothing Then
      echo       BrowseFolder = ""
      echo       Exit Function
      echo    End If
      echo.
      echo    Set objFolderItem = objFolder.Self
      echo    objPath = objFolderItem.Path
      echo.
      echo    BrowseFolder = objPath
      echo End Function
      )>"%tmp%\Folderpath.vbs"
      for /f "tokens=* delims=*" %%a in ('Cscript "%tmp%\Folderpath.vbs" //nologo') do (set "a=%%a")
      echo Tu as choisis le dossier "%a%"
      pause>nul
      
      0
      1. jemaid38 > greg6614 Messages postés 629 Statut Membre
         
        Je passais par là...
        Et ce petit fichier de commande répond parfaitement à mon besoin : un grand merci Greg6614!
        0