Advertisement
Hugo7

Code de référence

Aug 22nd, 2015
473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 1.80 KB | None | 0 0
  1. @echo off
  2. ::
  3. :: Jeu du code le plus compact, proposé par Hugo
  4. ::
  5. :: Voici le code de référence, qui prouve que le résultat attendu est possible!
  6. ::
  7. :: Votre mission (si vous l'acceptez..), est de simplifier ce code que j'ai volontairement détaillé.
  8. :: Le résultat sera exprimé en octets et non en nombre de lignes, une fois TOUS les commentaires supprimés.
  9. ::
  10.  
  11. set fichier_yaml=fichier.yml
  12.  
  13. setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
  14.  
  15. ::reset de output.txt
  16. echo.>output.txt
  17.  
  18. echo Traitement en cours...
  19.  
  20. :: %%L > L comme ligne...   Le traitement de ce FOR ignore TOUS les espaces en début de ligne dans le yml.
  21. for /f "eol=# tokens=*" %%L in ('type %fichier_yaml%') do (
  22.  
  23.  set ligne=%%L
  24.  
  25.  :: %%S > S comme str, et ça tombe bien par ce que %%T sera pour le titre ^^
  26.  if "!ligne:~0,1!"=="c" (
  27.   for /f "tokens=1,* delims=:" %%S in ('echo !ligne!') do (
  28.   :: On enlève l'espace qu'il y a entre les : et le texte qui suit
  29.    set titre=%%T
  30.    set etitre=!titre:~1!
  31.    if "!etitre!"=="" (
  32.     echo null>>output.txt
  33.    ) else echo !etitre!>>output.txt
  34.   )
  35.  )
  36.  
  37.  REM pause
  38.  
  39.  if "!ligne:~0,1!"=="s" (
  40.   for /f "tokens=1,* delims=:" %%S in ('echo !ligne!') do (
  41.    set sstitre=%%T
  42.    set esstitre=!sstitre:~1!
  43.    if "!esstitre!"=="" (
  44.     echo ^| null>>output.txt
  45.    ) else echo ^| !esstitre!>>output.txt
  46.   )
  47.  )
  48.  if "!ligne:~0,1!"=="t" (
  49.   for /f "tokens=1,* delims=:" %%S in ('echo !ligne!') do (
  50.    set texte=%%T
  51.    set etexte=!texte:~1!
  52.    if "!etexte!"=="" (
  53.     echo ^| ^| null>>output.txt
  54.     ) else echo ^| ^| !etexte!>>output.txt
  55.    )
  56.   )
  57.  if "!ligne:~0,1!"=="@" echo.>>output.txt
  58.  
  59.  REM pause
  60. )
  61. endlocal
  62. pause
  63. cls
  64. :: On ne met pas TYPE à cause des accents qui n'y passent pas, pourtant ces accents sont bien présents dans output.txt.
  65. notepad output.txt
  66. pause
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement