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

  1. #1
    Nouveau Candidat au Club
    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 confirmé
    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.

###raw>template_hook.ano_emploi###