Advertisement
Guest User

Untitled

a guest
Apr 8th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 5.16 KB | None | 0 0
  1. @echo off
  2. Setlocal EnableDelayedExpansion
  3.  
  4.  
  5.  
  6. rem fichier exemple
  7. (
  8. echo;jean;choco123;7f6fb32c-7e49-4f86-b23f-24a63d9cc0a3
  9. echo;pierre;lol147;e4b2c762-3194-4471-93b4-20f35ed47461
  10. echo;louis;mot de passe de la mort;65b0742c-bdbe-40f1-a8ab-07dc49d6e354
  11. echo;luc;oui;b9a59fd6-f041-4099-b456-dd8bcead1418
  12. )> mon_fichier.txt
  13.  
  14.  
  15.  
  16. rem on créé une Table
  17. call :Table.Create ma_table_client ""Nom" "Mot de Passe" "ID""
  18.  
  19. rem on importe notre fichier mon_fichier.txt (créé plus haut) dans notre Table
  20. call :Table.Import ma_table_client mon_fichier.txt
  21.  
  22. rem on affiche notre Table pour voir un peu à quoi ça ressemble
  23. echo;Table Import From File :
  24. call :Table.Display ma_table_client
  25.  
  26. rem on supprime le 3ème Item, ici le 3ème Item correspond à 2 (les indices commencent à 0)
  27. call :Table.DeleteFromIndex ma_table_client 2
  28.  
  29. rem on nettoie tout
  30. call :Table.TidyIndex ma_table_client
  31.  
  32. rem on affiche tout ça
  33. echo;Index 3 Deleted :
  34. call :Table.Display ma_table_client
  35.  
  36. rem bon on va trier un peu ce bordel xD
  37. call :Table.SortBy ma_table_client 0 ma_table_client_triee
  38.  
  39. rem on affiche tout ça
  40. echo;Table Sorted :
  41. call :Table.Display ma_table_client_triee
  42.  
  43. rem et on sauvegarde tout ça :
  44. call :Table.SaveToCSV ma_table_client_triee mon_mega_fichier
  45.  
  46.  
  47.  
  48.  
  49. pause>nul&exit
  50. :Table.Create <Name> <Rows>
  51.   for /f "tokens=1,* delims= " %%a in ('echo;%*') do (
  52.     set "%%~a=%%~b"
  53.     set %%~a.Rows.Length=0
  54.     for %%i in (%%~b) do (
  55.       set "%%~a.Rows[!%%~a.Rows.Length!]=%%~i"
  56.       set /a %%~a.Rows.Length+=1
  57.     )
  58.   )
  59.   set %~1.Length=0
  60. Exit /b
  61. :Table.CreateFromCSV <Name> <@File>
  62.   set indexLine=0
  63.   for /f "tokens=* delims=;" %%i in ('type "%~2"') do (
  64.     set line=%%~i
  65.     set line="!line:;=" "!"
  66.     if not "!indexLine!"=="0" (
  67.       set i=0
  68.       for %%j in (!line!) do (
  69.         if !i! LEQ !Rows.Length! (
  70.           for %%u in ("%~1.Rows[!i!]") do set %~1[!%~1.Length!].!%%~u!=%%~j
  71.         )
  72.         set /a i+=1
  73.       )
  74.       set /a %~1.Length+=1
  75.     ) else (
  76.       call :Table.Create "%~1" "!line!"
  77.       set /a Rows.Length=!%~1.Rows.Length!
  78.     )
  79.     set /a indexLine+=1
  80.   )
  81. Exit /b
  82. :Table.Append <Name> <Data>
  83.   for /f "tokens=1,* delims= " %%a in ('echo;%*') do (
  84.     set Name=%%~a
  85.     set Data=%%~b
  86.     set Length=!%%~a.Length!
  87.     set /a Rows.Length=!%~1.Rows.Length!-1
  88.     set i=0
  89.     for %%i in (!Data!) do (
  90.       if !i! LEQ !Rows.Length! (
  91.         for %%u in ("%~1.Rows[!i!]") do set "!Name![!Length!].!%%~u!=%%~i"
  92.       )
  93.       set /a i+=1
  94.     )
  95.     set /a %%~a.Length+=1
  96.   )
  97. Exit /b
  98. :Table.Display <Name>
  99.   set /a Length=!%~1.Length!-1
  100.   set Display=
  101.   for %%i in (!%~1!) do set "Display=!Display! - %%~i"
  102.   echo;!Display:~3!
  103.   echo;----------------------------
  104.   for /l %%i in (0,1,!Length!) do (
  105.     set Display=%%i
  106.     for %%j in (!%~1!) do set "Display=!Display! - !%~1[%%i].%%~j!"
  107.     echo;!Display!
  108.   )
  109.   echo;
  110. Exit /b
  111. :Table.DeleteFromIndex <Name> <Index>
  112.   for %%i in (!%~1!) do (
  113.     set %~1[%~2].%%~i={NULL}
  114.   )
  115. Exit /b
  116. :Table.TidyIndex <Name>
  117.   set /a Length=!%~1.Length!-1
  118.   set /a Rows.Length=!%~1.Rows.Length!
  119.   set newLength=0
  120.   for /l %%i in (0,1,!Length!) do (
  121.     set Null=0
  122.     for %%j in (!%~1!) do (
  123.       if "!%~1[%%i].%%~j!"=="{NULL}" set /a Null+=1
  124.     )
  125.     if not "!Null!"=="!Rows.Length!" (
  126.       for %%j in (!%~1!) do (
  127.         set "%~1[!newLength!].%%~j=!%~1[%%i].%%~j!"
  128.       )
  129.       set /a newLength+=1
  130.     )
  131.   )
  132.   set %~1.Length=!newLength!
  133. Exit /b
  134. :Table.SortBy <Name> <RowID> <Output:Table>
  135.   set /a Length=!%~1.Length!-1
  136.   type nul > "%temp%\sortTemp"
  137.   for /l %%i in (0,1,!Length!) do (
  138.     for %%u in ("%~1.Rows[%~2]") do for %%v in ("!%%~u!") do echo;!%~1[%%i].%%~v! - %%i
  139.   )>> "%temp%\sortTemp"
  140.   type "%temp%\sortTemp" | sort > "%temp%\sortTemp2"
  141.   set %~3.Length=0
  142.   call :Table.Create %~3 "!%~1!"
  143.   for /f "tokens=*" %%i in ('type "%temp%\sortTemp2"') do (
  144.     for %%j in ('echo;%%i') do set index=%%~j
  145.     set index=!index:~0,1!
  146.     for %%j in (!%~1!) do (
  147.       for %%u in (!index!) do set "%~3[!%~3.Length!].%%~j=!%~1[%%~u].%%~j!"
  148.     )
  149.     set /a %~3.Length+=1
  150.   )
  151. Exit /b
  152. :Table.GetByIndex <Name> <Index> <Output:Table.Row>
  153.   set %~3=
  154.   for %%i in (!%~1!) do (
  155.     set %~3=!%~3! "!%~1[%~2].%%~i!"
  156.   )
  157.   set %~3=!%~3:~1!
  158. Exit /b
  159. :Table.DisplayRow <Name> <Index>
  160.   echo;%~1[%~2] :
  161.   for %%i in (!%~1!) do (
  162.    echo;  - %%~i : !%~1[%~2].%%~i!
  163.   )
  164.   echo;
  165. Exit /b
  166. :Table.SaveToCSV <Name> <Output:@File>
  167.   set /a Length=!%~1.Length!-1
  168.   type nul > "%~2.csv"
  169.   set Row=
  170.   for %%j in (!%~1!) do (
  171.     set Row=!Row!;%%~j
  172.   )
  173.   (
  174.     echo;!Row:~1!
  175.   )>> "%~2.csv"
  176.   for /l %%i in (0,1,!Length!) do (
  177.     set Row=
  178.     for %%j in (!%~1!) do (
  179.       set Row=!Row!;!%~1[%%i].%%~j!
  180.     )
  181.     (
  182.       echo;!Row:~1!
  183.     )>> "%~2.csv"
  184.   )
  185. Exit /b
  186. :Table.Import <Name> <@File>
  187.   set /a Rows.Length=!%~1.Rows.Length!-1
  188.   for /f "tokens=* delims=;" %%i in ('type "%~2"') do (
  189.     set line=%%~i
  190.     set line="!line:;=" "!"
  191.     set i=0
  192.     for %%j in (!line!) do (
  193.       if !i! LEQ !Rows.Length! (
  194.         for %%u in ("%~1.Rows[!i!]") do set %~1[!%~1.Length!].!%%~u!=%%~j
  195.       )
  196.       set /a i+=1
  197.     )
  198.     set /a %~1.Length+=1
  199.   )
  200. Exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement