connecthor
Goto Top

Werte in einer Datei in verschiedenen Pfaden auslesen und ersetzen

Guten Morgen,

ich beziehe mich auf den beitrag Bestimmten gefundenen Wert aus txt verarbeiten - - etwas weiter am ende des beitrages

das problem ist das folgende:

in einer INI-datei stehen pfade zu verschiedenen ordnern, in denen sich eine bestimmte datei befindet, in der ein wert (name) gesucht und ersetzt werden soll. in dem beitrag oben wurde das schon im ansatz behandelt. doch leider gelingt es mir nur entweder den ersten, Xten oder letzten gefundenen pfad in der INI-datei zu bearbeiten. bearbeitet müssen aber alle eventuell gefundenen pfade werden.

ihr könnt bestimmt helfen.

Danke

Content-ID: 146458

Url: https://administrator.de/forum/werte-in-einer-datei-in-verschiedenen-pfaden-auslesen-und-ersetzen-146458.html

Ausgedruckt am: 22.12.2024 um 04:12 Uhr

BigWim
BigWim 08.07.2010 um 08:40:05 Uhr
Goto Top
Moin Moin,

doch leider gelingt es mir nur entweder den ersten, Xten oder letzten gefundenen pfad in der INI-datei zu bearbeiten
ich misch mal so als Ahnungsloser mit und würde in diesem Fall folgendes empfehlen.

Nehme Deine funktioniere Batch-Datei und bau eine weitere Schleife oder Aufruf drumherum, die Deine Batch solange aufruft, bis der veralterte Pfad nicht mehr gefunden wird.

Markus
77559
77559 08.07.2010 um 16:33:30 Uhr
Goto Top
Hallo Conneccthor,

dein letztes Feedback in obigem Beitrag war das nicht hilfreiche "ähmm... geht nicht. "

In meine letzte Batch-version könntest du ja auch mal Echos zur Abgrenzung einfügen wann was nicht funktioniert.
Es ist ein bisschen viel verlangt, wenn wir deine Umgebung möglichst genau nachstellen sollen.

Gruß
LotPings
connecthor
connecthor 12.07.2010 um 17:49:28 Uhr
Goto Top
guten heißen tag,

also, ich hab ein paar echos mit eingefügt um zu sehen ob das was ich habe funktioniert.
ergebniss:
Nicht gefunden: "\prefs.js"  
Nicht gefunden: "\prefs.js"  
Nicht gefunden: "\prefs.js"  
"C:\del\23n8d32.default\prefs.js"  
C:\del\23n8d32.default\prefs.NEW
Nicht gefunden: "\prefs.js"  
Nicht gefunden: "\prefs.js"  
Nicht gefunden: "\prefs.js"  
"C:\del\2nfw2oei.default\prefs.js"  
C:\del\2nfw2oei.default\prefs.NEW
Nicht gefunden: "\prefs.js"  
Nicht gefunden: "\prefs.js"  
Nicht gefunden: "\prefs.js"  
"C:\del\28nf2bg2.default\prefs.js"  
C:\del\28nf2bg2.default\prefs.NEW

also irgend wie findet er die pfade, aber dann macht er nichts.

die datei sieht folgendermaßen aus:
echo Beginne!
Echo Bitte warten!
set "Datei=%js%\prefs.js"  
set "Von=username@domain-gmbh.de"  
set "Nach=username@domain.de"  

For /f "UseBackQ Tokens=1,* Delims==" %%A in (%Ini%) Do Call :ProcessFile "%%B\prefs.js"   

Goto :Eof 
:ProcessFile 
If Not Exist %1 Echo Nicht gefunden: %1 & Goto :Eof 
echo %1
Set "PrefNew=%~dpn1.NEW"   
echo %PrefNEW%

Type NUL >"%PrefNEW%"   
for /f "usebackq delims=" %%k in (%1) do set "L=%%k" & set "L=!L:%Von%=%Nach%!"& >>"%PrefNEW%" echo.!L!  

ich denke es ist bloß ne kleinigkeit...
77559
77559 12.07.2010 um 18:04:01 Uhr
Goto Top
Das ist wohl mehr als eine Kleinigkeit,

  • ist irgendwo ein Befehl SetLocal EnableDelayedExpansion ?
  • woher kommt %Ini%, was steht drin ?

Zeile 17 schreibst du besser so:
for /f "usebackq delims=" %%k in (%1) do set "L=%%k" &  >>"%PrefNEW%" echo.!L:%Von%=%Nach%!  

Gruß
LotPings
connecthor
connecthor 13.07.2010 um 07:19:08 Uhr
Goto Top
guten morgen,

ja, das SetLocal EnableDelayedExpansion steht am anfang der batch.
das %ini% beschreibt nur den pfad zur einstellungsdatei in der die pfade stehen, die er auslesen soll, wo dann die jeweils zu bearbeitende PREFS.JS steht.
77559
77559 13.07.2010 um 08:57:45 Uhr
Goto Top
Zitat von @connecthor:
ja, das SetLocal EnableDelayedExpansion steht am anfang der batch.
das %ini% beschreibt nur den pfad zur einstellungsdatei in der die pfade stehen, die er auslesen soll, wo dann die jeweils zu
bearbeitende PREFS.JS steht.
Im Ursprungsposting hattest du doch schon einen Befehl, der nicht den kompletten Inhalt der %Ini% sondern nur die Zeilen die mit "path=" beginnen, verarbeitet hat.

Was steht denn z.Bsp. in der Datei "C:\del\28nf2bg2.default\prefs.NEW" drin?

Gruß
LotPings
connecthor
connecthor 14.07.2010 um 17:41:59 Uhr
Goto Top
das im ursprungsposting hast du schon mit dem

For /f "UseBackQ Tokens=1,* Delims==" %%A in (%Ini%) Do Call :ProcessFile "%%B\prefs.js"

abgehandelt.

die profiles.ini sieht ggf. folgendermaßen aus:

[Profile0]
Name=default
IsRelative=0
Path=C:\del\23n8d32.default

[Profile1]
Name=bearbeitung
IsRelative=0
Path=H:\email
Default=1

in der prefs.NEW steht dann ja der geänderte wert drin, den ich mit %von% nach %nach% übergebe.

ich bastel mal noch ein wenig... und danach teste ich. und dann melde ich mich. wenn euch noch was einfällt... immer her damit.

danke
77559
77559 14.07.2010 um 17:49:18 Uhr
Goto Top
Zitat von @connecthor:
das im ursprungsposting hast du schon mit dem

For /f "UseBackQ Tokens=1,* Delims==" %%A in (%Ini%) Do Call :ProcessFile "%%B\prefs.js"

abgehandelt.
Die war nicht gemeint sonder die Zeile wo statt nur %Ini% ein Findstr mit "path=" stand, die Logik dahinter solltest du inzwischen eigentlich begriffen haben.

Gruß
LotPings
connecthor
connecthor 30.07.2010 um 07:25:52 Uhr
Goto Top
so, getestet, geändert, getestet,geändert,getestet.... LÄUFT!! face-big-smile

das ganze sieht jetzt wie folgt aus:
@echo off & SETLOCAL enabledelayedexpansion
taskkill /IM anwendung.exe
set "ini=c:\del\profiles.ini"  

cls
ECHO Bitte gib nun Deinen Vornamen und Nachnamen ein.
ECHO ACHTUNG! Bitte Umlaute (Ž™š) in AE OE oder UE (ae, oe,ue) schreiben.
ECHO Beispiel: Max Müller in Max Mueller ändern!
ECHO Eingaben bitte mit ENTER (RETURN) bestätigen!
echo.
set /p vorname="Bitte deinen Vornamen eingeben: "  
echo.
set /p nachname="Bitte deinen Nachnamen eingeben: "  
set benutzername=%vorname%.%nachname%


echo Beginne!
Echo Bitte warten!
set "Von=%benutzername%@domain-gmbh.de"  
set "Nach=%benutzername%@domain.de"  
set "t=%temp%\text.tmp"  

For /f "UseBackQ Tokens=1,* Delims==" %%A in (%Ini%) Do Call :ProcessFile "%%B\prefs.js"   

Goto :Eof 
:ProcessFile 
If Not Exist %1 Echo > nul & Goto :Eof 

if exist "%t%" del "%t%"  
for /f "usebackq delims=" %%k in (%1) do (set "Line=%%k" & set Line=!Line:%Von%=%Nach%! & echo !Line!>>"%t%")  
move /y "%t%" "%1"  

:exit


danke, bis zum nächsten mal