[Batch] Comment lire la 7e ligne d'un fichier ? [Résolu]

Comment lire la 7e ligne d'un fichier ? [Résolu] [Batch] - Shell/Batch - Programmation

Marsh Posté le 08-03-2007 à 14:28:14    

Bonjour,
 
Je cherche à extraire le chemin où sont stockés mes mails Thunderbird afin de faire un backup.
 
Il faut donc pour cela lire le fichier C:\Documents and Settings\COUILLARD-12002\Application Data\Thunderbird\profiles.ini[/u]
Et à la 7e ligne il y a Path=X:\Thunderbird\Profiles\6cnzn7ci.défaut qui change parfois.
 
Savez-vous comment récupérer cette donnée "X:\Thunderbird\Profiles\6cnzn7ci.défaut" en batch Windows ?
 
 
 
Mon profiles.ini :

[General]
StartWithLastProfile=0
 
[Profile0]
Name=12002
IsRelative=0
Path=X:\Thunderbird\Profiles\6cnzn7ci.défaut
Default=1


Message édité par sieurcoug le 09-03-2007 à 14:53:17
Reply

Marsh Posté le 08-03-2007 à 14:28:14   

Reply

Marsh Posté le 08-03-2007 à 15:15:52    

Avec un boucle for

Message cité 1 fois
Message édité par webding le 08-03-2007 à 15:19:39
Reply

Marsh Posté le 08-03-2007 à 15:26:46    

webding a écrit :

Avec un boucle for


Oui ca me va  :)  
Mais comment l'écrire ?

Reply

Marsh Posté le 08-03-2007 à 15:33:16    

for /f "skip=6 tokens=2 delims==" %%i in ('type y.txt') do echo %%i & goto suit
:suit
 
tu remplace y.txt par le chemin du fichier.ini

Reply

Marsh Posté le 08-03-2007 à 15:34:54    

Mais au fait que veut tu faire avec ce script

Reply

Marsh Posté le 08-03-2007 à 15:34:56    

@echo off
for /f "delims=" %%a in ('more/e +6 ^< profiles.ini') do set "ligne=%%a"
echo %ligne%
pause

Reply

Marsh Posté le 08-03-2007 à 15:37:24    

Je ne connaissai pas la commane more/e, elle est propre a xp ?

Reply

Marsh Posté le 08-03-2007 à 15:47:24    

Hum, j'en sais rien ^^
J'ai toujours tourné sous XP pro quand je codais en batch donc j'peux pas trop te répondre.

Reply

Marsh Posté le 08-03-2007 à 15:49:44    

Je vien de la trouver sous xp,
 
Tu n'a pas fini ta boucle

Reply

Marsh Posté le 08-03-2007 à 15:51:38    

Génial Webding !
J'ai fait :

for /f "skip=6 tokens=2 delims==" %%i in ('type "%APPDATA%\Thunderbird\profiles.ini"') do echo %%i & goto suit
:suit


Ca marche nickel.
 
L'autre commande de Blastkiller marchait presque, elle m'affichait la dernière ligne "Default=1", même avec more/e +5.
 
Merci beaucoup !
Ca m'est utile pour faire un batch de sauvegarde d'un (petit) parc de postes avec Xcopy.
Des fois les utilisateurs mettent leurs mails ailleurs que dans le répertoires par défaut.

Encore une question (j'abuse : ) : Pourquoi le code suivant m'affiche 1 ?

Code :
  1. for /f "skip=6 tokens=2 delims==" %%i in ('type "%APPDATA%\Thunderbird\profiles.ini"') do set MailsThunderbird=%%i
  2. echo %MailsThunderbird%


Comment je peut manipuler la valeur récupérée après ?

Reply

Marsh Posté le 08-03-2007 à 15:51:38   

Reply

Marsh Posté le 08-03-2007 à 15:55:01    

Essaye comme ça:
for /f "skip=6 tokens=2 delims==" %%i in ('type "%APPDATA%\Thunderbird\profiles.ini"') do set MailsThunderbird=%%i & goto suit
:suit
      echo %MailsThunderbird%

Reply

Marsh Posté le 08-03-2007 à 16:02:28    

Comment ça manipuler la valeur récupérée ?

Reply

Marsh Posté le 08-03-2007 à 16:03:32    

woups, autant pour moi :

 

@echo off
for /f "delims=" %%a in ('more/e +6 ^< profiles.ini') do if not defined ligne set "ligne=%%a"
set ligne=%ligne:~5%
echo %ligne%
pause

 

sa marche mieux ! ;)


Message édité par blastkiller le 08-03-2007 à 16:07:07
Reply

Marsh Posté le 08-03-2007 à 16:05:00    

Super, Merci Webding !!!
Ca marche super.
Je vais pouvoir faire mes Xcopy :

Code :
  1. xcopy "%APPDATA%\Thunderbird" "%RepertoireBackup%\%USERNAME%\Application Data\Thunderbird\" /V /F /E /H /R /Y /I /D /K /Z

Reply

Marsh Posté le 09-03-2007 à 10:37:55    

Le fait de connaitre le chemin ca me permet aussi de tester la présence de parent.lock.
Ce fichier indique que Thunderbird est en cours d'exécution et il fait échouer mon Xcopy.
Idem pour Firefox.
 
Il me reste un petit souci : il y a un espace à la fin de la chaîne.
Comment l'enlever ?

Reply

Marsh Posté le 09-03-2007 à 10:47:25    

La je ne sais pas

Reply

Marsh Posté le 09-03-2007 à 11:15:03    

J'ai trouvé ! Ici : http://www.experts-exchange.com/OS [...] d=20816600
 

Code :
  1. set RepMailsThunderbird=%RepMailsThunderbird:~,-1%

Reply

Marsh Posté le 09-03-2007 à 14:52:07    

Ca y est ! J'ai pu faire ce que je voulais : sauvegarder mes profils Firefox et Thunderbird, peu importe où ils sont situés (du moment qu'ils sont accessibles par l'explorateur, naturellement).
Il suffit de copier les lignes ci-dessous dans un fichier .bat à lancer comme un exécutable.
C'est hyper simple à utiliser, aucune installation de logiciels de backup à faire, et c'est méga rapide !!
Voici mon code, si ca peut vous servir :
(et merci à vous pour l'aide)
 

@echo off
if "%os%" =="Windows_NT" color
title Sauvegarde des donnees de %USERNAME%
 
set RepertoireBackup="ou_on_veut"
 
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Sauvegarde vers : %RepertoireBackup%
echo º Pour l'utilisateur %USERNAME%
echo º - L'affichage devient bleu si erreur -
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
 
echo ÍÍÍÍÍÍÍÍÍÍ Thunderbird ÍÍÍÍÍÍÍÍÍÍ
xcopy "%APPDATA%\Thunderbird" "%RepertoireBackup%\%USERNAME%\Application Data\Thunderbird\" /V /F /H /R /Y /I /D /K /Z
if errorlevel 2 goto abort
if errorlevel 4 goto lowmemory
if errorlevel 5 goto writeerror
REM IsRelative = 1 ?
for /f "skip=5 tokens=2 delims==" %%i in ('type "%APPDATA%\Thunderbird\profiles.ini"') do set IsRelativeThunderbird=%%i & goto suitMailsThunderbird1
:suitMailsThunderbird1
for /f "skip=6 tokens=2 delims==" %%i in ('type "%APPDATA%\Thunderbird\profiles.ini"') do set RepMailsThunderbird=%%i & goto suitMailsThunderbird2
:suitMailsThunderbird2
REM on enleve le dernier caractère (un espace)
set RepMailsThunderbird=%RepMailsThunderbird:~,-1%
REM on met des anti-slashes à la place des slahes
set RepMailsThunderbird=%RepMailsThunderbird:/=\%
 
REM on créé l'arborescence complète de destination
if %IsRelativeThunderbird%==1 set RepBackupMailsThunderbird=%USERNAME%\Application Data\Thunderbird\%RepMailsThunderbird%
REM si le chemin est relatif on ajoute l'arborescence
if %IsRelativeThunderbird%==1 set RepMailsThunderbird=%APPDATA%\Thunderbird\%RepMailsThunderbird%
if %IsRelativeThunderbird%==0 set RepBackupMailsThunderbird=%RepMailsThunderbird::=_%
 
if exist "%RepMailsThunderbird%\parent.lock" call:afficher_message "Fermez Thuderbird !"
if not exist "%RepMailsThunderbird%\parent.lock" (
 if exist %RepMailsThunderbird% xcopy %RepMailsThunderbird% "%RepertoireBackup%\%RepBackupMailsThunderbird%\" /V /F /E /H /R /Y /I /D /K /Z
)
if errorlevel 2 goto abort
if errorlevel 4 goto lowmemory
if errorlevel 5 goto writeerror
 
 
echo ÍÍÍÍÍÍÍÍÍÍ Firefox ÍÍÍÍÍÍÍÍÍÍ
xcopy "%APPDATA%\Mozilla\Firefox" "%RepertoireBackup%\%USERNAME%\Application Data\Mozilla\Firefox\" /V /F /H /R /Y /I /D /K /Z
for /f "skip=5 tokens=2 delims==" %%i in ('type "%APPDATA%\Mozilla\Firefox\profiles.ini"') do set IsRelativeFirefox=%%i & goto suitFirefox1
:suitFirefox1
for /f "skip=6 tokens=2 delims==" %%i in ('type "%APPDATA%\Mozilla\Firefox\profiles.ini"') do set RepFirefox=%%i & goto suitFirefox2
:suitFirefox2
REM on enleve le dernier caractère (un espace)
set RepFirefox=%RepFirefox:~,-1%
REM on met des anti-slashes à la place des slahes
set RepFirefox=%RepFirefox:/=\%
 
REM on créé l'arborescence complète de destination
if %IsRelativeFirefox%==1 set RepBackupFirefox=%USERNAME%\Application Data\Mozilla\Firefox\%RepFirefox%
if %IsRelativeFirefox%==1 set RepFirefox=%APPDATA%\Mozilla\Firefox\%RepFirefox%
if %IsRelativeFirefox%==0 set RepBackupFirefox=%RepFirefox::=_%
 
if exist "%RepFirefox%\parent.lock" call:afficher_message "Fermez Firefox !"
if not exist "%RepFirefox%\parent.lock" (
 if exist "%RepFirefox%" xcopy "%RepFirefox%" "%RepertoireBackup%\%RepBackupFirefox%\" /V /F /E /H /R /Y /I /D /K /Z
)
if errorlevel 2 goto abort
if errorlevel 4 goto lowmemory
if errorlevel 5 goto writeerror
 
 
:abort
REM Code 2 : L'utilisateur a appuyé sur CTRL+C pour arrêter l'exécution de la commande xcopy.  
echo Fichier verrouillé ou vous avez appuyé sur CTRL+C pour mettre fin à la copie.
echo %Date%;%USERNAME%;%TempsDebut%;%Time%;ERREUR-Accès à un fichier vérrouillé (lock Firefox/Thunderbird ?) ou Annulé par l'utilisateur >> %FichierLog%
REM echo. >> %FichierLog%
goto exit
 
:lowmemory
REM Code 4 : Une erreur d'initialisation s'est produite. La mémoire ou l'espace disque est insuffisant, ou vous avez entré un nom de lecteur ou une syntaxe non valide sur la ligne de commandes.
echo Mémoire insuffisante pour copier les fichiers ou
echo lecteur ou syntaxe de ligne de commandes non valide.
echo %Date%;%USERNAME%;%TempsDebut%;%Time%;ERREUR-Espace disque insuffisant >> %FichierLog%
REM echo. >> %FichierLog%
goto exit
 
:writeerror
REM Code 5 : Une erreur d'écriture s'est produite sur le disque.  
echo %Date%;%USERNAME%;%TempsDebut%;%Time%;ERREUR d'écriture sur le disque >> %FichierLog%
REM echo. >> %FichierLog%
goto exit
 
:afficher_message
if "%os%" =="Windows_NT" color 1F
echo.
echo -----------------------------------
echo %1
echo -----------------------------------
echo.
REM Sortie de la fonction  
goto:EOF  
 
:exit


Message édité par sieurcoug le 09-03-2007 à 15:24:49
Reply

Marsh Posté le 12-10-2007 à 17:19:14    

Code :
  1. for /f "delims=" %%i in ('type fichier.txt') do set VrLgn=%%i& set /a compt+=1& call :testNumbLgn
  2. goto :oef
  3. :testNumbLgn
  4. if %compt% equ 7 echo %VrLgn%
  5. goto :oef


Message édité par Coolnut le 12-10-2007 à 17:19:23
Reply

Marsh Posté le 28-08-2015 à 12:07:06    

ça marche mieux comme ça :
 

Code :
  1. @echo off
  2. set compt=0
  3.     for /f "delims=" %%i in ('type A_eteindre.txt') do set VrLgn=%%i & set /a compt+=1 & call :testNumbLgn
  4.     goto :oef
  5.     :testNumbLgn
  6.     if %compt% equ 7 echo %VrLgn%
  7.     goto :oef
  8. :oef


Message édité par pierre059 le 28-08-2015 à 12:07:33
Reply

Sujets relatifs:

Leave a Replay

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