Самый простой способ, который я вижу, это сначала удалить преф, если он уже есть, и безоговорочно добавить его в файл. Таким образом, вы не сделаете перезапись, если она уже есть, но это гораздо сложнее сделать в обычном пакетном файле.
Примерно так:
for /d %%x in ("%APPDATA%\Thunderbird\Profiles\*.default") do (
findstr /v /c:"msgcompose.text_color" "%%x\prefs.js" > "%%x\prefs.new.js"
echo user_pref^("msgcompose.text_color", "black"^);>>"%%x\prefs.new.js"
move /y "%%x\prefs.new.js" "%%x\prefs.js" >nul
)
findstr /v
печатает только строки, которые не включают искомый текст.
Во время тестирования я бы посоветовал закомментировать move
в последней строке, пока вы не убедитесь, что он на самом деле работает правильно.