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 :

Récupérer entrée utilisateur et chercher fichier dans sous-dossiers


Sujet :

Scripts/Batch

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Illustrateur
    Inscrit en
    Septembre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Illustrateur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Récupérer entrée utilisateur et chercher fichier dans sous-dossiers
    Bonjour,

    Je cherche à faire un petit script pour automatiser l’algorithme suivant :

    - Récupérer une entrée utilisateur de format +12+345 (les + étant interchangeables avec des - puisqu’il s’agit de coordonnées latitude/longitude).
    - Chercher ces coordonnées entrées dans deux dossiers spécifiques et tous leurs sous-dossiers, le format de fichier étant .dsf et les deux sous-dossiers commençant par zzz_
    - Si elles n’existent pas dans ces sous-dossiers, aller les chercher dans un troisième dossier et tous les sous-dossiers de celui-ci.
    - Une fois trouvées, copier le fichier correspondant dans un autre dossier pour y être traité avec la suite du script qui existe déjà et qui fonctionne.

    Voilà où j’en suis, sachant que ce code ne fonctionne qu’à partir de :loop2.
    Après l’entrée des coordonnées, la console renvoie : "Le chemin d’accès spécifié est introuvable" et "else n’est pas reconnu comme une commande interne".

    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
    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
    44
    45
    46
    47
    @echo off
     
    set fileC=
    set fileG=
     
    :loop1
    set /p tile="Enter coordinates: "
     
    for /f "delims=" %%f in ('dir /b/s "D:\X Plane 11\Custom Scenery"\zzz_*.dsf') do (
    	if %%f == %tile%.dsf do (
    	xcopy %%f D:\XPtools\tools)
    	else for /f "delims=" %%f in ('dir /b/s "D:\X Plane 11\Global Scenery\X-Plane 11 Global Scenery"') do (
    	if %fileG%.dsf == %tile%.dsf do (
    	xcopy %%f D:\XPtools\tools)
    )
    pause
    set /p choice="Find another tile (Y/N)?"
    if choice==Y (goto :loop1) else goto :follow
     
    :follow
    rem archive renaming
    ren *.dsf *.7z
    rem archive extraction
    7z e *.7z
    rem archive deletion
    del *.7z
     
    :loop2
    if exist *.dsf (goto :process) else goto :end
     
    :process
    rem gets filename
    for %%a in (*.dsf) do set fileName=%%~na
     
    rem send to DSFTool
    start "DSFTool" /B /wait D:\XPTools\tools\DSFTool.exe --dsf2text "%fileName%.dsf" "%fileName%.txt"
     
    rem cleanup
    del %fileName%.dsf *.txt *txt.sea_level.raw
     
    rem move files to the right place
    move /Y D:\XPTools\tools\*.txt.elevation.raw D:\XPTools\Processed\
     
    goto :loop2
     
    :end
    echo Done.

    Merci pour votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Bonjour,

    Voilà quelques corrections concernant la première partie du script :

    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
    18
    19
    20
    21
    @echo off
     
    set "fileC="
    set "fileG="
     
    :loop1
    set "tile="
    set /p tile="Enter coordinates: "
    if not defined tile (goto :loop1)
     
    for /f "delims=" %%F in ('dir /b /s "D:\X Plane 11\Custom Scenery"\zzz_*.dsf"') do (
    	if /i "%%~nxF"=="zzz_%tile%.dsf" (xcopy "%%~F" "D:\XPtools\tools\")
    )
     
    for /f "delims=" %%F in ('dir /b /s "D:\X Plane 11\Global Scenery\X-Plane 11 Global Scenery"') do (
    	if /i "%fileG%.dsf"=="%tile%.dsf" (xcopy "%%~F" "D:\XPtools\tools\")
    )
     
    pause
    set /p choice="Find another tile (Y/N)?"
    if /i "%choice%"=="Y" (goto :loop1) else (goto :follow)

    Je n'ai pas réussi à deviner la valeur de la variable fileG, du coup je ne peux pas dire si la condition dans la deuxième boucle est correcte ou pas.

Discussions similaires

  1. [AC-2007] Chercher fichier dans sous repertoire et ouvrir
    Par thunder69 dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2019, 12h58
  2. [AC-2010] Listing de Fichier dans sous Dossier (Problem de Loop)
    Par FewRa dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/08/2014, 11h02
  3. Gawk et traitement de fichiers dans sous-dossiers
    Par thisistheend dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 18/07/2011, 09h40
  4. [XL-2007] recherche fichiers dans sous-dossier
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/03/2010, 09h19
  5. [Batch] Récupérer le nom d'un fichier dans un dossier
    Par mmahouac dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 13/08/2009, 16h47

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