Advertisement
Guest User

Untitled

a guest
Jul 24th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 3.84 KB | None | 0 0
  1. @echo off
  2.  
  3. ::Permet d'afficher les accents lorsque le fichier est encodé en ANSI (encodage par défaut)
  4. chcp 28591 > nul
  5.  
  6. ::Ceci va nous servir pour les variables dans les boucles for
  7. setlocal EnableDelayedExpansion EnableExtensions
  8.  
  9. ::permet de revenir au début du programme lorsque le programme sera terminé
  10. :back
  11.  
  12. ::On va compter le nombre de ligne dans le fichier avec cette variable
  13. set /a num=1
  14.  
  15. ::On demande à l'utilisateur de faire un glisser/déposer ou d'écrire le nom du fichier
  16. set /p file="Fichier à modifier : "
  17.  
  18. ::Ce petit code va nous permettre d'enlever les guillemets ---->
  19. ::On enlève les guillemets car si l'utilisateur fait un glisser/déposser : le script affichera "Fichier introuvable"
  20. ::car il y aura des guillemets en double
  21. echo "%file%"> "%programdata%\temp"
  22. setlocal EnableDelayedExpansion
  23. type nul > "%programdata%\CaB.txt"
  24. for /F "delims=" %%A in ('type "%programdata%\temp"') do (
  25.   set row=%%A
  26.   set row=!row:"=!
  27.   echo.!row!>> "%programdata%\CaB.txt"
  28. )
  29. del "%programdata%\temp"
  30. ren "%programdata%\CaB.txt" temp
  31. set /p file=<"%programdata%\temp"
  32.  
  33.  
  34.  
  35. ::On vérifie si le fichier est bon (qu'il existe)
  36. if not exist "%file%" goto :error_file
  37.  
  38.  
  39. ::On demande à l'utilisateur de choisir la ligne qu'il veut modifier
  40. :back_line
  41. set /p "line=Ligne à modifier : "
  42.  
  43.  
  44. ::On vérifie que le numéro de ligne est bien un nombre
  45. for /f "delims=0123456789" %%a in ("%line%") do (
  46.     goto :error_line
  47. )
  48.  
  49.  
  50. ::On sauvegarde le nombre de la ligne à afficher
  51. set /a nb_line=%line%
  52. echo.
  53.  
  54.  
  55. ::On met la ligne dans la variable line
  56. for /f "tokens=*" %%a in ('type "%file%"') do (
  57.     if "!line!"=="!num!" set "line=%%a"
  58.     set /a num+=1
  59. )
  60.  
  61.  
  62. ::On vérifie si la ligne existe
  63. if "%line%"=="%nb_line%" goto :error_nb_line
  64.  
  65.  
  66. ::On réinitialise la variable num
  67. set /a num=1
  68.  
  69.  
  70. ::On affiche la ligne à modifier
  71. echo.
  72. echo Ligne qui va être modifier :
  73. echo.
  74. echo        " %line% "
  75. echo.
  76.  
  77.  
  78. ::On demande à l'utilisateur de remplacer la ligne qui va être modifier par autre chose
  79. set /p "edit_line=Remplacer par : "
  80.  
  81.  
  82. ::On applique le changement
  83. for /f "tokens=*" %%a in ('type "%file%"') do (
  84.     if "!num!"=="1" (
  85.         if "!nb_line!"=="!num!" (
  86.             echo %edit_line%> "%programdata%\temp"
  87.         ) else (
  88.             echo %%a> "%programdata%\temp"
  89.         )
  90.     ) else (
  91.         if "!nb_line!"=="!num!" (
  92.             echo %edit_line%>> "%programdata%\temp"
  93.         ) else (
  94.             echo %%a>> "%programdata%\temp"
  95.         )
  96.     )
  97.     set /a num+=1
  98. )
  99.  
  100.  
  101. ::On supprime l'ancien fichier qui contient l'ancienne ligne
  102. del "%file%"
  103.  
  104.  
  105. ::On copie "%programdata%\temp" à l'emplacement de %file% et on le renomme avec le nom du fichier %file%
  106. copy "%programdata%\temp" "%file%"
  107.  
  108.  
  109. ::On supprime le fichier temp
  110. del "%programdata%\temp"
  111.  
  112. ::On vérifie que le fichier temp a bien été copier et renommer à l'emplacement %file%
  113. ::S'il n'a pas été copier et renommer c'est que l'UAC bloque l'accès au fichier et qu'il est nécessaire d'exécuter ce programme en mode administrateur
  114. if not exist "%file%" goto :error_file_droit
  115.  
  116. echo.
  117. echo Modification de la ligne %nb_line% du fichier %file% avec succès !
  118. echo.
  119. echo.
  120.  
  121.  
  122. ::On écrit cette ligne sans retour à la ligne pour simuler un "vrai" pause :)
  123. set/p =Appuyer sur n'importe quel touche pour revenir au début du programme..<nul
  124. pause>nul
  125. cls
  126. goto :back
  127.  
  128.  
  129.  
  130. :: #### Les messages d'erreurs ####
  131. :error_file
  132. cls
  133. echo Le fichier sélectionné n'existe pas !
  134. echo.
  135. pause
  136. cls
  137. goto :back
  138. :error_line
  139. cls
  140. echo La ligne ne correspond pas à un nombre !
  141. echo.
  142. pause
  143. cls
  144. echo Fichier à modifier : %file%
  145. goto :back_line
  146. :error_nb_line
  147. cls
  148. echo Le fichier ne contient que %num% lignes !
  149. echo.
  150. pause
  151. cls
  152. echo Fichier à modifier : %file%
  153. goto :back_line
  154. :error_file_droit
  155. cls
  156. echo Impossible de créer le fichier !
  157. echo Veuillez exécuter ce script en mode administrateur !
  158. echo.
  159. pause
  160. cls
  161. goto :back
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement