windows - Batch fil til at ændre/tilføje linje til Thunderbird prefs.js filer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har kun meget grundlæggende færdigheder, der skriver batch-filer til Windows.


Jeg vil gerne kunne tilføje denne linje til prefs.js for hver ThunderBird-profil som en del af et login script: [14]


user\_pref("msgcompose.text\_color", "black");


Hvis msgcompose.text\_color er der allerede med en anden værdi, vil jeg helst have det erstattet med "black".


Jeg har nogle af stykkerne i puslespillet:



  • filerne kan findes på: \%APPDATA\%ThunderbirdProfiles*.defaultprefs.js hvor \%APPDATA\%ThunderbirdProfiles*.default er nul, en eller flere profilmapper, når wildcard'et udbygges

  • findstr kan bruges til at søge i en fil

  • Jeg ved om kommandoen echo og >>



Hvordan sætter jeg disse stykker sammen? [15]




REDIGERE:


selvom denne metode virker, har jeg siden opdaget user.js, hvilket er en bedre metode til at overordne indstillinger i prefs.js [16]

Bedste reference


Den nemmeste måde jeg kan se er at fjerne pref'en først, hvis den allerede er der og betingelsesløst tilføjer den til filen. På den måde ville du ikke overskrive, hvis den allerede er til stede, men det er meget sværere at gøre i en almindelig batchfil.


Noget i den stil:


for /d \%\%x in ("\%APPDATA\%ThunderbirdProfiles*.default") do (
  findstr /v /c:"msgcompose.text\_color" "\%\%xprefs.js" > "\%\%xprefs.new.js"
  echo user\_pref^("msgcompose.text\_color", "black"^);>>"\%\%xprefs.new.js"
  move /y "\%\%xprefs.new.js" "\%\%xprefs.js" >nul
)


findstr /v udskriver kun linjer, som don 't indeholder den søgte tekst.


Under testen anbefaler jeg at kommentere move i den sidste linje, indtil du er sikker på, at den rent faktisk virker korrekt.