Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- ::Permet d'afficher les accents lorsque le fichier est encodé en ANSI (encodage par défaut)
- chcp 28591 > nul
- ::Ceci va nous servir pour les variables dans les boucles for
- setlocal EnableDelayedExpansion EnableExtensions
- ::permet de revenir au début du programme lorsque le programme sera terminé
- :back
- ::On va compter le nombre de ligne dans le fichier avec cette variable
- set /a num=1
- ::On demande à l'utilisateur de faire un glisser/déposer ou d'écrire le nom du fichier
- set /p file="Fichier à modifier : "
- ::Ce petit code va nous permettre d'enlever les guillemets ---->
- ::On enlève les guillemets car si l'utilisateur fait un glisser/déposser : le script affichera "Fichier introuvable"
- ::car il y aura des guillemets en double
- echo "%file%"> "%programdata%\temp"
- setlocal EnableDelayedExpansion
- type nul > "%programdata%\CaB.txt"
- for /F "delims=" %%A in ('type "%programdata%\temp"') do (
- set row=%%A
- set row=!row:"=!
- echo.!row!>> "%programdata%\CaB.txt"
- )
- del "%programdata%\temp"
- ren "%programdata%\CaB.txt" temp
- set /p file=<"%programdata%\temp"
- ::On vérifie si le fichier est bon (qu'il existe)
- if not exist "%file%" goto :error_file
- ::On demande à l'utilisateur de choisir la ligne qu'il veut modifier
- :back_line
- set /p "line=Ligne à modifier : "
- ::On vérifie que le numéro de ligne est bien un nombre
- for /f "delims=0123456789" %%a in ("%line%") do (
- goto :error_line
- )
- ::On sauvegarde le nombre de la ligne à afficher
- set /a nb_line=%line%
- echo.
- ::On met la ligne dans la variable line
- for /f "tokens=*" %%a in ('type "%file%"') do (
- if "!line!"=="!num!" set "line=%%a"
- set /a num+=1
- )
- ::On vérifie si la ligne existe
- if "%line%"=="%nb_line%" goto :error_nb_line
- ::On réinitialise la variable num
- set /a num=1
- ::On affiche la ligne à modifier
- echo.
- echo Ligne qui va être modifier :
- echo.
- echo " %line% "
- echo.
- ::On demande à l'utilisateur de remplacer la ligne qui va être modifier par autre chose
- set /p "edit_line=Remplacer par : "
- ::On applique le changement
- for /f "tokens=*" %%a in ('type "%file%"') do (
- if "!num!"=="1" (
- if "!nb_line!"=="!num!" (
- echo %edit_line%> "%programdata%\temp"
- ) else (
- echo %%a> "%programdata%\temp"
- )
- ) else (
- if "!nb_line!"=="!num!" (
- echo %edit_line%>> "%programdata%\temp"
- ) else (
- echo %%a>> "%programdata%\temp"
- )
- )
- set /a num+=1
- )
- ::On supprime l'ancien fichier qui contient l'ancienne ligne
- del "%file%"
- ::On copie "%programdata%\temp" à l'emplacement de %file% et on le renomme avec le nom du fichier %file%
- copy "%programdata%\temp" "%file%"
- ::On supprime le fichier temp
- del "%programdata%\temp"
- ::On vérifie que le fichier temp a bien été copier et renommer à l'emplacement %file%
- ::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
- if not exist "%file%" goto :error_file_droit
- echo.
- echo Modification de la ligne %nb_line% du fichier %file% avec succès !
- echo.
- echo.
- ::On écrit cette ligne sans retour à la ligne pour simuler un "vrai" pause :)
- set/p =Appuyer sur n'importe quel touche pour revenir au début du programme..<nul
- pause>nul
- cls
- goto :back
- :: #### Les messages d'erreurs ####
- :error_file
- cls
- echo Le fichier sélectionné n'existe pas !
- echo.
- pause
- cls
- goto :back
- :error_line
- cls
- echo La ligne ne correspond pas à un nombre !
- echo.
- pause
- cls
- echo Fichier à modifier : %file%
- goto :back_line
- :error_nb_line
- cls
- echo Le fichier ne contient que %num% lignes !
- echo.
- pause
- cls
- echo Fichier à modifier : %file%
- goto :back_line
- :error_file_droit
- cls
- echo Impossible de créer le fichier !
- echo Veuillez exécuter ce script en mode administrateur !
- echo.
- pause
- cls
- goto :back
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement