Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1373 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH] Configuration Firefox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BATCH] Configuration Firefox

n°1465602
hfs06
Posté le 26-10-2006 à 17:25:37  profilanswer
 

Bonjour,
 
Je souhaite automatiser la configuration de Firefox sur mes postes clients Windows.
J'ai créé un fichier refs.txt contenant les paramètres que je souhaite imposer :
   user_pref("browser.cache.disk.capacity", 5000);
   user_pref("browser.download.manager.retention", 1);
   user_pref("browser.history_expire_days", 1);
   user_pref("browser.startup.homepage", "http://intranet.monsite.fr" );
   user_pref("network.proxy.autoconfig_url", "http://intranet.monsite.fr/proxy.pac" );
   user_pref("network.proxy.type", 2);
   user_pref("network.cookie.lifetimePolicy", 2);
   user_pref("network.cookie.prefsMigrated", true);
 
qui n'est qu'un sous-ensemble du fichier prefs.js caractérisant le Firefox d'un utilisateur (situé dans %AppData%\Mozilla\Firefox\Profiles\xxxxxxxx.default)
S'il s'agit d'une première connexion, il n'y a pas de problème car prefs.js n'existe pas encore.
Si ce n'est pas le cas, les choses se compliquent un peu car il faut conserver les paramètres de l'utilisateur et forcer les paramètres ci-dessus.
 
Pas trop familier avec les batchs, j'ai écrit le code suivant qui, évidemment, ne produit pas l'effet escompté!
(NB : le séparateur "," me permet d'isoler les noms des attributs de leur valeur)
 
for /f "tokens=1,2 delims=," %%a in ('type prefs.js') do (
  for /f "tokens=1,2 delims=," %%y in ('type refs.txt') do (
    if %%a==%%y (echo %%a %%b >> new-prefs.js)
    if not %%a==%%y (%%y %%z >> new-prefs.js)
  )
)
 
Le problème est que je ne sais pas quitter une boucle for en cours d'itération ni utiliser un booléen dans 2 boucles imbriquées.  
Pour résumer ma problématique : si le fichier prefs.js contient des paramètres présents dans le fichier refs.txt, il faut les remplacer par ces derniers (avec leur valeur)  sinon les conserver.
Merci d'avance de votre aide.
 
NB : si cela intéresse qqn, je peux fournir le code pour paramétrer IE.

mood
Publicité
Posté le 26-10-2006 à 17:25:37  profilanswer
 

n°1465634
wackevat
Posté le 26-10-2006 à 18:10:14  profilanswer
 

Essaie un autre langage, car le batch et les guillemets dans les fichiers de texte à traiter, ça ne va pas de paire :)
 
Sinon, concernant tes deux questions :
- quitter une boucle : un simple goto vers une étiquette hors de la boucle suffira.
- il n'y a pas d'opérateurs logiques de comparaisons pour combiner deux conditions dans le batch. Il faut deux boucles imbriquées pour ça. Par contre, pour un if not après un if, tu as le else ;)


Message édité par wackevat le 26-10-2006 à 18:11:33
n°1465834
hfs06
Posté le 27-10-2006 à 09:26:53  profilanswer
 

Bonjour nglechau,
 
Merci pour ta réponse rapide. Concernant le choix du langage, je n'ai pas le choix puisque cet partie de code s'inscrit dans un script de login situé sur mon PDC LDAP/SAMBA. Je propose une reformulation du problème car en relisant ma prose hier soir je me suis attrapé un mal de tête...
 
f1.txt contient des attributs suivis de leur valeur.
f2.txt contient des attributs (parfois les mêmes) suivis de leur valeur
1/ On génère f3.txt à partir de f2.txt en supprimant les lignes où figurent des attributs référencés dans f1.txt
2/ On ajoute dans f3.txt les lignes de f1.txt
 
f1.txt
attribut3, 5
attribut4, 7
attribut6, 1
 
f2.txt
attribut1, 2
attribut2, 9
attribut4, 6
attribut5, 1
attribut6, 0
attribut7, 3
 
f3.txt (après l'étape 1/ : on a supprimé les attributs 4 et 6)
attribut1, 2
attribut2, 9
attribut5, 1
attribut7, 3
 
f3.txt (après l'étape 2/ : on a ajouté les attributs 3, 4 et 6 de f1.txt)
attribut1, 2
attribut2, 9
attribut3, 5
attribut4, 7
attribut5, 1
attribut6, 1
attribut7, 3
 
Voilà!... Sur le plan fonctionnel c'est imparable mais je n'arrive pas à le coder! Je continue de chercher...

n°1465909
Chaos Inte​stinal
Posté le 27-10-2006 à 10:34:05  profilanswer
 

Peut-être que ce guide pourrait t'aider au cas où tu ne l'aurais pas déjà lu.

n°1466038
wackevat
Posté le 27-10-2006 à 12:35:07  profilanswer
 

hfs06 a écrit :

Je propose une reformulation du problème car en relisant ma prose hier soir je me suis attrapé un mal de tête....


J'avais bien compris, ayant tenté de faire la même chose pour Thunderbird (même système de fichiers de config, inspiré de Netscape) ;)
 
Les difficultés pour réaliser la tâche avec le batch se situent à la présence des guillemets dans le fichier texte à traiter. Sans quoi, les modifs pourraient s'effectuer par exemple comme dans cet exemple :
http://www.robvanderwoude.com/index.html
--> BootIni.bat Change boot menu timeout value in BOOT.INI to 5 seconds

n°1466210
hfs06
Posté le 27-10-2006 à 15:33:44  profilanswer
 

wackevat a écrit :

J'avais bien compris, ayant tenté de faire la même chose pour Thunderbird (même système de fichiers de config, inspiré de Netscape) ;)
 
Les difficultés pour réaliser la tâche avec le batch se situent à la présence des guillemets dans le fichier texte à traiter. Sans quoi, les modifs pourraient s'effectuer par exemple comme dans cet exemple :
http://www.robvanderwoude.com/index.html
--> BootIni.bat Change boot menu timeout value in BOOT.INI to 5 seconds


 
Merci nglechau pour tes précisions,
 
Je n'avais pas bien mesuré le problème des guillemets, après quelques heures je commence à comprendre...  :(  
Néanmoins je me demande s'il n'est pas possible dans un premier temps de remplacer les guillemets par un autre caractère, dans un second temps de générer la nouvelle version puis, dans un troisième temps de remettre les guillemets. Ok, ça fait un peu usine à gaz!  :pt1cable: Ne voulant pas perdre trop de temps, j'ai écrit le VBScript suivant (pas très élégant mais ça fonctionne) :
 
set fso=CreateObject("Scripting.FileSystemObject" )
set ipf = fso.OpenTextFile("C:\temp\prefs.js" )
set fso=CreateObject("Scripting.FileSystemObject" )
set opf = fso.CreateTextFile("C:\temp\newprefs.js" )
 
Do While ipf.AtEndOfStream <> True
  currentLine=ipf.readLine
  tmp=split(currentLine,"," )
  if instr(currentLine, "browser.cache.disk.capacity" ) then  
    opf.writeLine tmp(0) & ", 5000);"
  elseif instr(currentLine, "browser.download.manager.retention" ) or instr(currentLine, "browser.history_expire_days" ) then
    opf.writeLine tmp(0) & ", 1);"  
  elseif instr (currentLine, "browser.startup.homepage" & """" ) then
    opf.writeLine tmp(0) & ", " & """" & "http://intranetre.exp.synchrotron-soleil.fr" & """" & " );"
  elseif instr(currentLine, "network.proxy.autoconfig_url" ) then
    opf.writeLine tmp(0) & ", " & """" & "http:intranetre.exp.synchrotron-soleil.fr/proxy.pac" & """" & " );"
  elseif instr(currentLine, "network.proxy.type" ) or instr(currentLine, "network.cookie.lifetimePolicy" ) then
    opf.writeLine tmp(0) & ", 2);"  
  elseif instr(currentLine, "network.cookie.prefsMigrated" ) then
    opf.writeLine tmp(0) & ", true);"  
  else
    opf.writeLine currentLine
  end if
Loop
 
C'est frustrant mais bon... Je l'appelle depuis mon script de login et voilà. Merci encore pour ton aide.
 
Ciao

n°1466501
wackevat
Posté le 28-10-2006 à 00:27:24  profilanswer
 

Quitte à passer par du vbs pour les remplacements, autant "éditer" les fichiers directement par ce moyen ;)
 
La syntaxe de remplacement d'une sous-chaîne 1 de cacractères par une chaîne 2 est :
set chaine=%chaine:chaine1=chaine2%
 
set /?
pour plus d'infos.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH] Configuration Firefox

 

Sujets relatifs
CSS Firefox / Internet Explorer PNGGestion de la configuration d'une application Python
scroll="no" Firefoxmode arrière plan sous batch??
equivalent table-header-group pour FireFoxBug graphique, avec les images selon la résolution, firefox et ie
batch au login des utilisateurs pour lancer une page internet[ BATCH] de recherche
[ BATCH] de rechercheBatch - Supprimer les attributs lecture seule d'une archive zip
Plus de sujets relatifs à : [BATCH] Configuration Firefox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR