xxt1985
Goto Top

muss einen Pfad aus einer .ini Datei herrausziehen und muss dann in einer .js Datei aus diesem Pfad 2 Zeilen ändern

Hallo @all, bin leider kein Programmierer. Danke fürs helfen.

Also wir setzten im Betrieb Thunderbird als Email Programm ein.
Da nicht alle Mitarbeiter Signaturen drin haben, soll nun eine einheitliche Signatur bei jeden (200) installiert werden.

Thunderbird hat unterschiedliche Profilnamen: z.B. 81owgesf.default oder w84sdgif.default

der Profilname steht in der .ini Datei. C:\Dokumente und Einstellungen\%username%\Anwendungsdaten\Thunderbird\profiles.ini

In der .ini Datei steht

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=1
Path=Profiles/81owgesf.default


In der Datei "C:\Dokumente und Einstellungen\%username%\Anwendungsdaten\Thunderbird\Profiles\81owgesf.default\prefs.js" oder
"C:\Dokumente und Einstellungen\%username%\Anwendungsdaten\Thunderbird\Profiles\w84sdgif.default\prefs.js"

In der .js Datei steht ziemlich in der mitte das folgende. Es reicht aus, die beiden Pfade zu ändern.

user_pref("mail.identity.id3.sig_file", "C:\\Programme\\Mozilla Thunderbird\\Signatur_TEST.txt");
user_pref("mail.identity.id3.sig_file-rel", "[ProfD]../../../../../../Programme/Mozilla Thunderbird/Signatur_TEST.txt");


Wie bekomme ich das denn hin?

Content-Key: 123042

Url: https://administrator.de/contentid/123042

Ausgedruckt am: 29.03.2024 um 08:03 Uhr

Mitglied: rubberman
rubberman 23.08.2009 um 03:09:15 Uhr
Goto Top
Hallo xxt1985.

Ich hoffe, mit den paar Informationen von Dir, was einigermaßen sinnvolles gebastelt zu haben.
Bitte mache in jedem Fall eine Sicherheitskopie des JavaScripts, bevor Du testest.

Die Variablen newPath1 und newPath2 musst Du natürlich entsprechend anpassen (hast ja nicht geschrieben, wo die neuen Signaturen liegen).

@echo off &setlocal
set js=prefs.js
set newPath1=C:\\Programme\\Mozilla Thunderbird\\NEUE_Signatur_TEST.txt
set newPath2=[ProfD]../../../../../../Programme/Mozilla Thunderbird/NEUE_Signatur_TEST.txt

setlocal enabledelayedexpansion
set iniPath=%appdata%\Thunderbird
set iniFile=profiles.ini
set iniSection=Profile0
set iniKey=Path

set x=0
set iniSection=[%iniSection%]
pushd "%iniPath%"  
for /f "tokens=*" %%i in ('findstr /b /v ";" "%iniFile%"') do (  
 if defined iniValue goto forward
 echo %%i|findstr /b /c:"%iniSection%" /i>nul&&set x=1  
 echo %%i|findstr /b /c:"["|findstr /b /c:"%iniSection%" /i /v>nul&&set x=0  
 if !x!==1 ( 
  for /f "delims== tokens=1,2" %%a in ("%%i") do set "XiniKey=%%a" &set "XiniValue=%%b"  
  if defined XiniValue (
   if /i !XiniKey!==%iniKey% set "iniValue=!XiniValue!"  
  )
 )
)
:forward
popd
endlocal &set "iniValue=%iniValue%"  

set jsPath=%appdata%\Thunderbird\%iniValue:/=\%
pushd "%jsPath%"  
type nul>tmp.js
for /f "delims=: tokens=1" %%i in ('findstr /n "^" "%js%"^|findstr /c:"mail.identity.id3.sig_file"^|findstr /c:"mail.identity.id3.sig_file-rel" /v') do set /a line1=%%i  
for /f "delims=: tokens=1" %%i in ('findstr /n "^" "%js%"^|findstr /c:"mail.identity.id3.sig_file-rel"') do set /a line2=%%i  
for /f "delims=: tokens=1*" %%i in ('findstr /n "^" "%js%"') do set /a line=%%i &set "code=%%j" &call :sub  
move /y "tmp.js" "%js%"  
popd
pause
goto :eof

:sub
if not defined code (echo.>>tmp.js) &goto :eof
if %line%==%line1% (
  call set "code=%%code:C:\\Programme\\Mozilla Thunderbird\\Signatur_alt.txt=%newPath1%%%"  
)
if %line%==%line2% (
  call set "code=%%code:[ProfD]../../../../../../Programme/Mozilla Thunderbird/Signatur_alt.txt=%newPath2%%%"  
)
echo.%code%>>tmp.js
goto :eof

Grüße
rubberman
Mitglied: xxt1985
xxt1985 25.08.2009 um 08:50:13 Uhr
Goto Top
Hallo rubberman,

Danke das skript ist bis zu Zeile 30 wunderbar und funktioniert auch.

Aber das Skript schreibt in die .js datei nur echo OFF


Gruß
Mitglied: rubberman
rubberman 25.08.2009 um 15:07:59 Uhr
Goto Top
Hallo xxt1985.

Wahrscheinlich ein Leerzeichenproblem. Ich ändere mal oben. Probier noch mal. Falls es nicht funktioniert, poste mal das JavaScript, dann kann ich das vor Ort testen.

Grüße
rubberman
Mitglied: xxt1985
xxt1985 25.08.2009 um 15:36:49 Uhr
Goto Top
Hier ist das JavaScript.

Danke


  1. Mozilla User Preferences

/* Do not edit this file.
*
    • If you make changes to this file while the application is running,
    • the changes will be overwritten when the application exits.
*
*/

user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1250667875);
user_pref("app.update.lastUpdateTime.background-update-timer", 1250583021);
user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1250583021);
user_pref("extensions.lastAppVersion", "2.0.0.19");
user_pref("intl.charsetmenu.mailview.cache", "ISO-8859-15");
user_pref("ldap_2.prefs_migrated", true);
user_pref("ldap_2.servers.domainGlobal.auth.dn", "somain\\email");
user_pref("ldap_2.servers.domainGlobal.auth.savePassword", true);
user_pref("ldap_2.servers.domainGlobal.description", "domain Global");
user_pref("ldap_2.servers.domainGlobal.filename", "abook.mab");
user_pref("ldap_2.servers.domainGlobal.maxHits", 250);
user_pref("ldap_2.servers.domainGlobal.replication.lastChangeNumber", 0);
user_pref("ldap_2.servers.domainGlobal.uri", "ldap:192.168.x.x:389/OU=Globales Adressbuch,OU=Kontakte,DC=domain,DC=local??sub?(objectclass=*)");
user_pref("ldap_2.servers.default.filename", "default.mab");
user_pref("ldap_2.servers.default.replication.lastChangeNumber", 0);
user_pref("ldap_2.servers.default.uri", "moz-abldapdirectory:
default.mab");
user_pref("ldap_2.servers.history.replication.lastChangeNumber", 0);
user_pref("ldap_2.servers.pab.replication.lastChangeNumber", 0);
user_pref("mail.account.account1.server", "server1");
user_pref("mail.account.account3.identities", "id3");
user_pref("mail.account.account3.server", "server3");
user_pref("mail.accountmanager.accounts", "account1,account3");
user_pref("mail.accountmanager.defaultaccount", "account3");
user_pref("mail.accountmanager.localfoldersserver", "server1");
user_pref("mail.attachment.store.version", 1);
user_pref("mail.folder.views.version", 1);
user_pref("mail.identity.id3.attach_signature", true);
user_pref("mail.identity.id3.attach_vcard", false);
user_pref("mail.identity.id3.auto_quote", true);
user_pref("mail.identity.id3.compose_html", true);
user_pref("mail.identity.id3.directoryServer", "");
user_pref("mail.identity.id3.doBcc", false);
user_pref("mail.identity.id3.doBccList", "");
user_pref("mail.identity.id3.draft_folder", "imap:vorname.nachname%40domain.de@deb.domain.de/Drafts");
user_pref("mail.identity.id3.drafts_folder_picker_mode", "0");
user_pref("mail.identity.id3.encryption_cert_name", "");
user_pref("mail.identity.id3.encryptionpolicy", 0);
user_pref("mail.identity.id3.escapedVCard", "");
user_pref("mail.identity.id3.fcc", true);
user_pref("mail.identity.id3.fcc_folder", "imap:
vorname.nachname%40domain.de@deb.domain.de/Sent");
user_pref("mail.identity.id3.fcc_folder_picker_mode", "0");
user_pref("mail.identity.id3.fcc_reply_follows_parent", false);
user_pref("mail.identity.id3.fullName", "Vorname Nachname");
user_pref("mail.identity.id3.organization", "");
user_pref("mail.identity.id3.overrideGlobal_Pref", false);
user_pref("mail.identity.id3.reply_on_top", 0);
user_pref("mail.identity.id3.reply_to", "");
user_pref("mail.identity.id3.showSaveMsgDlg", false);
user_pref("mail.identity.id3.sig_bottom", true);
user_pref("mail.identity.id3.sig_file", "C:\\Programme\\Mozilla Thunderbird\\Signatur_alt.txt");
user_pref("mail.identity.id3.sig_file-rel", "[ProfD]../../../../../../Programme/Mozilla Thunderbird/Signatur_alt.txt");
user_pref("mail.identity.id3.sign_mail", false);
user_pref("mail.identity.id3.signing_cert_name", "");
user_pref("mail.identity.id3.smtpServer", "smtp2");
user_pref("mail.identity.id3.stationery_folder", "imap:vorname.nachname%40domain.de@deb.domain.de/Templates");
user_pref("mail.identity.id3.tmpl_folder_picker_mode", "0");
user_pref("mail.identity.id3.useremail", "vorname.nachname@domain.de");
user_pref("mail.identity.id3.valid", true);
user_pref("mail.preferences.advanced.selectedTabIndex", 0);
user_pref("mail.preferences.compose.selectedTabIndex", 2);
user_pref("mail.preferences.display.selectedTabIndex", 0);
user_pref("mail.preferences.privacy.selectedTabIndex", 0);
user_pref("mail.root.imap", "C:\\Dokumente und Einstellungen\\username\\Anwendungsdaten\\Thunderbird\\Profiles\\81owgesf.default\\ImapMail");
user_pref("mail.root.imap-rel", "[ProfD]ImapMail");
user_pref("mail.root.none", "C:\\Dokumente und Einstellungen\\username\\Anwendungsdaten\\Thunderbird\\Profiles\\81owgesf.default\\Mail");
user_pref("mail.root.none-rel", "[ProfD]Mail");
user_pref("mail.root.pop3", "C:\\Dokumente und Einstellungen\\username\\Anwendungsdaten\\Thunderbird\\Profiles\\81owgesf.default\\Mail");
user_pref("mail.root.pop3-rel", "[ProfD]Mail");
user_pref("mail.server.server1.ageLimit", 30);
user_pref("mail.server.server1.daysToKeepBodies", 30);
user_pref("mail.server.server1.daysToKeepHdrs", 30);
user_pref("mail.server.server1.directory", "C:\\Dokumente und Einstellungen\\username\\Anwendungsdaten\\Thunderbird\\Profiles\\81owgesf.default\\Mail\\Local Folders");
user_pref("mail.server.server1.directory-rel", "[ProfD]Mail/Local Folders");
user_pref("mail.server.server1.hostname", "Local Folders");
user_pref("mail.server.server1.name", "Lokale Ordner");
user_pref("mail.server.server1.numHdrsToKeep", 30);
user_pref("mail.server.server1.spamActionTargetAccount", "mailbox:
nobody@Local%20Folders");
user_pref("mail.server.server1.spamActionTargetFolder", "mailbox:nobody@Local%20Folders/Junk");
user_pref("mail.server.server1.type", "none");
user_pref("mail.server.server1.userName", "nobody");
user_pref("mail.server.server3.ageLimit", 30);
user_pref("mail.server.server3.capability", 791331);
user_pref("mail.server.server3.daysToKeepBodies", 30);
user_pref("mail.server.server3.daysToKeepHdrs", 30);
user_pref("mail.server.server3.directory", "C:\\Dokumente und Einstellungen\\username\\Anwendungsdaten\\Thunderbird\\Profiles\\81owgesf.default\\ImapMail\\deb.domain-1.de");
user_pref("mail.server.server3.directory-rel", "[ProfD]ImapMail/deb.domain-1.de");
user_pref("mail.server.server3.hostname", "deb.domain.de");
user_pref("mail.server.server3.max_cached_connections", 5);
user_pref("mail.server.server3.name", "vorname.nachname@domain.de");
user_pref("mail.server.server3.namespace.personal", "\"INBOX.\"");
user_pref("mail.server.server3.namespace.public", "\"shared.\",\"#shared.\"");
user_pref("mail.server.server3.numHdrsToKeep", 30);
user_pref("mail.server.server3.port", 993);
user_pref("mail.server.server3.socketType", 3);
user_pref("mail.server.server3.spamActionTargetAccount", "imap:
vorname.nachname%40domain.de@deb.domain.de");
user_pref("mail.server.server3.spamActionTargetFolder", "mailbox://nobody@Local%20Folders/Junk");
user_pref("mail.server.server3.timeout", 29);
user_pref("mail.server.server3.type", "imap");
user_pref("mail.server.server3.userName", "vorname.nachname@domain.de");
user_pref("mail.smtp.defaultserver", "smtp2");
user_pref("mail.smtpserver.smtp2.auth_method", 1);
user_pref("mail.smtpserver.smtp2.hostname", "deb.domain.de");
user_pref("mail.smtpserver.smtp2.port", 25);
user_pref("mail.smtpserver.smtp2.try_ssl", 0);
user_pref("mail.smtpserver.smtp2.username", "vorname.nachname@domain.de");
user_pref("mail.smtpservers", "smtp2");
user_pref("mail.spam.version", 1);
user_pref("mail.startup.enabledMailCheckOnce", true);
user_pref("mailnews.quotingPrefs.version", 1);
user_pref("mailnews.start_page_override.mstone", "1.8.1.19");
user_pref("mailnews.tags.$label1.color", "#FF0000");
user_pref("mailnews.tags.$label1.tag", "Wichtig");
user_pref("mailnews.tags.$label2.color", "#FF9900");
user_pref("mailnews.tags.$label2.tag", "Dienstlich");
user_pref("mailnews.tags.$label3.color", "#009900");
user_pref("mailnews.tags.$label3.tag", "Persönlich");
user_pref("mailnews.tags.$label4.color", "#3333FF");
user_pref("mailnews.tags.$label4.tag", "Zu erledigen");
user_pref("mailnews.tags.$label5.color", "#993399");
user_pref("mailnews.tags.$label5.tag", "Später");
user_pref("mailnews.tags.version", 2);
user_pref("mailnews.ui.threadpane.version", 5);
user_pref("wallet.caveat", true);
Mitglied: rubberman
rubberman 25.08.2009 um 21:56:19 Uhr
Goto Top
Hallo xxt1985.

Habe oben noch mal geändert. Problematisch ist diese Zeile:
user_pref("ldap_2.servers.domainGlobal.uri", "ldap://192.168.x.x:389/OU=Globales Adressbuch,OU=Kontakte,DC=lichtenstern,DC=local??sub?(objectclass=*)");  
Obwohl diese in den ursprünglichen FOR Schleifen in den Batchzeilen 44 und 47 eigentlich garnicht berücksichtigt werden durften (wegen des IF-Ausschlusses), hat genau das zum Abbruch geführt. Kann das Verhalten auch nicht erklären.
Habe in diese beiden Zeilen nun eine Zeichenersetzung eingebaut. Das setzt aber voraus, dass die Zeichenfolgen "C:\\Programme\\Mozilla Thunderbird\\Signatur_alt.txt" bzw. "[ProfD]../../../../../../Programme/Mozilla Thunderbird/Signatur_alt.txt" auch buchstabengetreu so im Ausgangsscript vorkommt...

Grüße
rubberman
Mitglied: xxt1985
xxt1985 27.08.2009 um 08:21:08 Uhr
Goto Top
Hallo,

Es funktioniert wunderbar.

Aber die Zeichensetzung des Pfades ist nicht immer gleich, da manche User sich schon eine Signatur eingerichtet haben.
Gibt es nicht die möglichkeit Zeile 62 und 63 mit der Zeilenangabe zu ersetzen?

Gruß
Mitglied: rubberman
rubberman 27.08.2009 um 11:01:08 Uhr
Goto Top
Hallo xxt1985,
nicht viel anders funktioniert das ganze jetzt schon. Im Vorfeld wird gesucht, welche Zeilennummer die zu ändernden Zeilen haben. In den Batchzeilen 43 und 46 wird dann verglichen, ob diese Zeilennummer mit der gerade zu verarbeitenden Zeile übereinstimmt...
Anders gesagt, das ganze ist kein Problem mehr. In Zeile 3 und Zeile 4 setzt du die gesamte Zeile, also etwa so:
set newPath1=user_pref("mail.identity.id3.sig_file", "C:\\Programme\\Mozilla Thunderbird\\NEUE_Signatur_TEST.txt");  
set newPath2=user_pref("mail.identity.id3.sig_file-rel", "[ProfD]../../../../../../Programme/Mozilla Thunderbird/NEUE_Signatur_TEST.txt");  
Zeile 44 geändert auf
  set "code=%newPath1%"   
Zeile 47 geändert auf
  set "code=%newPath2%"   
Grüße
rubberman
Mitglied: xxt1985
xxt1985 27.08.2009 um 12:25:48 Uhr
Goto Top
So funktioniert das Skript wunderbrächtig.

vielen vielen dank.


@echo off &setlocal
set js=prefs.js
set newPath1=user_pref("mail.identity.id3.sig_file", "C:\\Programme\\Mozilla Thunderbird\\NEUE_Signatur_TEST.txt");  
set newPath2=user_pref("mail.identity.id3.sig_file-rel", "[ProfD]../../../../../../Programme/Mozilla Thunderbird/NEUE_Signatur_TEST.txt");  



setlocal enabledelayedexpansion
set iniPath=%appdata%\Thunderbird
set iniFile=profiles.ini
set iniSection=Profile0
set iniKey=Path

set x=0
set iniSection=[%iniSection%]
pushd "%iniPath%"  
for /f "tokens=*" %%i in ('findstr /b /v ";" "%iniFile%"') do (  
 if defined iniValue goto forward
 echo %%i|findstr /b /c:"%iniSection%" /i>nul&&set x=1  
 echo %%i|findstr /b /c:"["|findstr /b /c:"%iniSection%" /i /v>nul&&set x=0  
 if !x!==1 ( 
  for /f "delims== tokens=1,2" %%a in ("%%i") do set "XiniKey=%%a" &set "XiniValue=%%b"  
  if defined XiniValue (
   if /i !XiniKey!==%iniKey% set "iniValue=!XiniValue!"  
  )
 )
)
:forward
popd
endlocal &set "iniValue=%iniValue%"  

set jsPath=%appdata%\Thunderbird\%iniValue:/=\%
pushd "%jsPath%"  
type nul>tmp.js
for /f "delims=: tokens=1" %%i in ('findstr /n "^" "%js%"^|findstr /c:"mail.identity.id3.sig_file"^|findstr /c:"mail.identity.id3.sig_file-rel" /v') do set /a line1=%%i  
for /f "delims=: tokens=1" %%i in ('findstr /n "^" "%js%"^|findstr /c:"mail.identity.id3.sig_file-rel"') do set /a line2=%%i  
for /f "delims=: tokens=1*" %%i in ('findstr /n "^" "%js%"') do set /a line=%%i &set "code=%%j" &call :sub  
move /y "tmp.js" "%js%"  
popd
pause
goto :eof

:sub
if not defined code (echo.>>tmp.js) &goto :eof
if %line%==%line1% (
  set "code=%newPath1%"  
)
if %line%==%line2% (
  set "code=%newPath2%"  
)
echo.%code%>>tmp.js
goto :eof
Mitglied: rubberman
rubberman 27.08.2009 um 13:31:17 Uhr
Goto Top
Na wunderbar face-smile
auch wenn das ganze am Ziel, NUR die Pfade zu ersetzen, knapp vorbei geht.

Grüße,
rubberman