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 :

Ouvrir l'explorateur de fichiers depuis un batch


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Ouvrir l'explorateur de fichiers depuis un batch
    Bonjour à tous.

    J'ai un bout de code batch qui me permet de faire un Robocopy des comptes utilisateurs sans les fichiers système.
    Le script demande de saisir la source (par exemple : C\Users\%username%\) et la destination.

    Ces valeurs sont saisis manuellement.
    Est-il possible, depuis le script, d'ouvrir l'explorateur de fichier et de sélectionner le dossier source et le dossier destination pour que cette valeur soit enregistrée dans le script pour exécution ?

    Code BATCH :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
     
    @echo off
    cls
    color F
    chcp 65001>nul
     
    setlocal EnableDelayedExpansion
     
    set /p Source=Veuillez saisir le chemin du profil : 
    echo ################################################################
    echo ##~~ Assurez-vous que vous avez un HDD EXTERNE de connecté  ~~##
    echo ##~~      ou un lecteur réseau mappé pour la sauvegarde     ~~##
    echo ################################################################
    set /p Destination=Veuillez saisir le chemin de la destination : 
    set /p Log=Veuillez saisir le chemin de la destination : 
     
    robocopy "%SOURCE%" "%Destination%" /MIR /XA:SH /XD AppData /XJD /LOG:%Log%\Robocopy.log


    Merci d'avance pour votre aide

  2. #2
    Membre confirmé
    Bonjour,

    C'est possible à l'aide d'une commande externe, par exemple avec Wfolder disponible ici : https://www.horstmuc.de/w32dial.htm

  3. #3
    Nouveau membre du Club
    Merci pour l'info barnabe0057.

    Je regarde ça demain.

    Je te tiendrai informé.

    Pour l'instant, je laisse le sujet en "ouvert".

  4. #4
    Expert éminent

    Ce bout de code de sélection de dossiers est inspiré par ici How to add filter to a file chooser in batch?

    Code BAT :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
    @echo off
    REM How to add filter to a file chooser in batch? 
    REM https://stackoverflow.com/questions/38369664/how-to-add-filter-to-a-file-chooser-in-batch?answertab=active#tab-top
    Title Selecting Source and Destination Folders For RoboCopy
    CHCP 65001>nul
    Color F
    cls
    echo(
    echo(  Veuillez SVP choisir votre dossier Source . . .
    call:folderSelection "%Source%", Source, "Veuillez SVP choisir votre dossier Source"
    echo(  Vous avez choisi le dossier source suivant  : "%Source%"
    pause
    cls
    echo(
    echo(  Veuillez SVP choisir votre dossier Destination . . .
    call:folderSelection "%Destination%", Destination, "Veuillez SVP choisir votre dossier Destination"
    echo(  Vous avez choisi le dossier Destination suivant : "%Destination%"
    cls
    echo(
    echo(  Vous avez choisi le dossier source suivant       : "%Source%"
    echo(  Vous avez choisi le dossier Destination suivant  : "%Destination%"
    pause & exit
    Rem ---------------------------------------------------------------------------------------------------------
    :folderSelection
    SetLocal & set "folder=%~1"
    set "dialog=powershell -sta "Add-Type -AssemblyName System.windows.forms^
    |Out-Null;$f=New-Object System.Windows.Forms.FolderBrowserDialog;$f.SelectedPath='%~1';$f.Description='%~3';^
    $f.ShowNewFolderButton=$true;$f.ShowDialog();$f.SelectedPath""
    for /F "delims=" %%I in ('%dialog%') do set "res=%%I"
    EndLocal & (if "%res%" EQU "" (set "%2=%folder%") else (set "%2=%res%"))
    exit/B 0
    Rem ---------------------------------------------------------------------------------------------------------


    Et Voici le code complet testé sur Windows 10 :
    Code BAT :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
    38
    39
    40
    41
    42
    43
    @echo off
    REM How to add filter to a file chooser in batch? 
    REM https://stackoverflow.com/questions/38369664/how-to-add-filter-to-a-file-chooser-in-batch?answertab=active#tab-top
    Title Selecting Source and Destination Folders RoboCopy
    CHCP 65001>nul
    Color F
    cls
    echo(
    echo( ################################################################
    echo( ##~~ Assurez-vous que vous avez un HDD EXTERNE de connecté  ~~##
    echo( ##~~      ou un lecteur réseau mappé pour la sauvegarde     ~~##
    echo( ################################################################
    pause
    echo(  Veuillez SVP choisir votre dossier Source . . .
    call:FolderSelection "%Source%", Source, "Veuillez SVP choisir votre dossier Source"
    echo(  Vous avez choisi le dossier source suivant  : "%Source%"
    pause
    cls
    echo(
    echo(  Veuillez SVP choisir votre dossier Destination . . .
    call:FolderSelection "%Destination%", Destination, "Veuillez SVP choisir votre dossier Destination"
    echo(  Vous avez choisi le dossier Destination suivant : "%Destination%"
    cls
    color A
    echo(
    echo(  Vous avez choisi le dossier source suivant       : "%Source%"
    echo(  Vous avez choisi le dossier Destination suivant  : "%Destination%"
    echo( La commande de RoboCopy sera :
    echo( 
    echo Robocopy "%Source%" "%Destination%" /MIR /XA:SH /XD AppData /XJD /LOG:"Log_Robocopy.log"
    pause
    Robocopy "%Source%" "%Destination%" /MIR /XA:SH /XD AppData /XJD /LOG:"Log_Robocopy.log"
    pause & exit
    Rem ---------------------------------------------------------------------------------------------------------
    :FolderSelection <SelectedPath> <folder> <Description>
    SetLocal & set "folder=%~1"
    set "dialog=powershell -sta "Add-Type -AssemblyName System.windows.forms^
    |Out-Null;$f=New-Object System.Windows.Forms.FolderBrowserDialog;$f.SelectedPath='%~1';$f.Description='%~3';^
    $f.ShowNewFolderButton=$true;$f.ShowDialog();$f.SelectedPath""
    for /F "delims=" %%I in ('%dialog%') do set "res=%%I"
    EndLocal & (if "%res%" EQU "" (set "%2=%folder%") else (set "%2=%res%"))
    exit/B 0
    Rem ---------------------------------------------------------------------------------------------------------

  5. #5
    Nouveau membre du Club
    Salut hackoofr!

    C'est vraiment top le code que tu m'as filé!
    J'ai fait plusieurs tests, et ça fonctionne parfaitement.

    Merci beaucoup pour ton aide!

###raw>template_hook.ano_emploi###