Structure des sous-dossiers avec chemin relatif au BAT

Structure des sous-dossiers avec chemin relatif au BAT - Shell/Batch - Programmation

Marsh Posté le 03-10-2007 à 17:54:29    

Ce script, devrait afficher la structure des sous-dossiers (par rapport au .BAT) avec le chemin relatif (chemin à partir du BAT). Il me manque plus qu'à utiliser la valeur de %L% à la place du 2 dans la ligne
Code:
 

Code :
  1. ECHO.%s:~2%


 
dans la sous-routine SUB.
 
 

Code :
  1. ::Affiche la structure des sous-dossiers avec leur chemin relatif à celui de ce BATCH
  2. @ECHO OFF
  3. FOR %%a in ("%CD%" ) DO SET racine=%%~Pna
  4. ECHO.%racine%
  5. SET s=%racine%
  6. :LONG
  7. SET /a L+=1
  8. SET s=%s:~0,-1%
  9. IF "%s%"=="" ECHO.LONGUEUR: %L% &Pause &GOTO SHOW
  10. GOTO LONG
  11. :SHOW
  12. ::Affiche le nom des chemins
  13. FOR /F "Delims=" %%f in ('DIR /b /s /ad "*.*"') DO (
  14.     CALL :SUB "%%~Pnf"
  15. )
  16. Pause
  17. ECHO.SUITE DU BATCH
  18. ::Renvoie une sous chaine
  19. :SUB
  20. SET s=%~1
  21. ECHO.%s:~2%
  22. GOTO :EOF


 
 
1. Aurriez-vous une idée? Ceci    ECHO.%s:~%L%%    ne fonctionne pas !!!
La solution est peut-être ici: http://www.computing.net/programmi [...] 11261.html
mais je n'y arrive pas avec ceci:   ECHO.!s:~%L%!
 
2. Est-on obliger d'utiliser une sous routine (:SUB) pour couper la chaine %%~Pnf  ?
En effet: extraire une sous-chaine de %var1% est facile.
Mais d'une variable de la forme %%var2    ??
Merci

Reply

Marsh Posté le 03-10-2007 à 17:54:29   

Reply

Marsh Posté le 04-10-2007 à 01:01:24    

Trouvé une solution:
 

Code :
  1. ::Structure des sous-dossiers avec leur chemin relatif
  2. @ECHO OFF
  3. IF NOT %1.==X. CMD /V:ON /C Call %0 X &GOTO :EOF
  4. FOR %%a in ("%CD%" ) DO SET racine=%%~Pna
  5. ECHO %racine%
  6. SET s=%racine%
  7. :LONG
  8. SET /a L+=1
  9. SET s=%s:~0,-1%
  10. IF "%s%"=="" GOTO SHOW
  11. GOTO LONG
  12. :SHOW
  13. SET /a L+=1
  14. ::Affiche le nom des chemins
  15. FOR /F "Delims=" %%f in ('DIR /b /s /ad') DO (
  16.     Call :SUB "%%~Pnf"
  17. )
  18. Pause
  19. ::Sous routine de traitement du chemin
  20. :SUB
  21. SET s=%~1
  22. ECHO.Full    : %s%
  23. ECHO.Relative: !s:~%L%!
  24. ECHO.------------------
  25. GOTO :EOF


 
PS. Je vais utiliser ce chemin relatif, pour construir l'index (en HTML) de mon dossier de travail global. A suivre.
 
Bien à vous.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed