Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Werte in einer Datei in verschiedenen Pfaden auslesen und ersetzen

Frage Entwicklung Batch & Shell

Mitglied: connecthor

connecthor (Level 1) - Jetzt verbinden

08.07.2010 um 07:25 Uhr, 2833 Aufrufe, 9 Kommentare

Guten Morgen,

ich beziehe mich auf den beitrag http://www.administrator.de/index.php?content=144191 - - 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
Mitglied: BigWim
08.07.2010 um 08:40 Uhr
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
Bitte warten ..
Mitglied: LotPings
08.07.2010 um 16:33 Uhr
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
Bitte warten ..
Mitglied: connecthor
12.07.2010 um 17:49 Uhr
guten heißen tag,

also, ich hab ein paar echos mit eingefügt um zu sehen ob das was ich habe funktioniert.
ergebniss:
01.
Nicht gefunden: "\prefs.js" 
02.
Nicht gefunden: "\prefs.js" 
03.
Nicht gefunden: "\prefs.js" 
04.
"C:\del\23n8d32.default\prefs.js" 
05.
C:\del\23n8d32.default\prefs.NEW 
06.
Nicht gefunden: "\prefs.js" 
07.
Nicht gefunden: "\prefs.js" 
08.
Nicht gefunden: "\prefs.js" 
09.
"C:\del\2nfw2oei.default\prefs.js" 
10.
C:\del\2nfw2oei.default\prefs.NEW 
11.
Nicht gefunden: "\prefs.js" 
12.
Nicht gefunden: "\prefs.js" 
13.
Nicht gefunden: "\prefs.js" 
14.
"C:\del\28nf2bg2.default\prefs.js" 
15.
C:\del\28nf2bg2.default\prefs.NEW
also irgend wie findet er die pfade, aber dann macht er nichts.

die datei sieht folgendermaßen aus:
01.
echo Beginne! 
02.
Echo Bitte warten! 
03.
set "Datei=%js%\prefs.js" 
04.
set "Von=username@domain-gmbh.de" 
05.
set "Nach=username@domain.de" 
06.
 
07.
For /f "UseBackQ Tokens=1,* Delims==" %%A in (%Ini%) Do Call :ProcessFile "%%B\prefs.js"  
08.
 
09.
Goto :Eof  
10.
:ProcessFile  
11.
If Not Exist %1 Echo Nicht gefunden: %1 & Goto :Eof  
12.
echo %1 
13.
Set "PrefNew=%~dpn1.NEW"  
14.
echo %PrefNEW% 
15.
 
16.
Type NUL >"%PrefNEW%"  
17.
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...
Bitte warten ..
Mitglied: LotPings
12.07.2010 um 18:04 Uhr
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:
01.
for /f "usebackq delims=" %%k in (%1) do set "L=%%k" &  >>"%PrefNEW%" echo.!L:%Von%=%Nach%!
Gruß
LotPings
Bitte warten ..
Mitglied: connecthor
13.07.2010 um 07:19 Uhr
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.
Bitte warten ..
Mitglied: LotPings
13.07.2010 um 08:57 Uhr
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
Bitte warten ..
Mitglied: connecthor
14.07.2010 um 17:41 Uhr
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:

01.
[Profile0] 
02.
Name=default 
03.
IsRelative=0 
04.
Path=C:\del\23n8d32.default 
05.
 
06.
[Profile1] 
07.
Name=bearbeitung 
08.
IsRelative=0 
09.
Path=H:\email 
10.
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
Bitte warten ..
Mitglied: LotPings
14.07.2010 um 17:49 Uhr
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
Bitte warten ..
Mitglied: connecthor
30.07.2010 um 07:25 Uhr
so, getestet, geändert, getestet,geändert,getestet.... LÄUFT!!

das ganze sieht jetzt wie folgt aus:
01.
@echo off & SETLOCAL enabledelayedexpansion 
02.
taskkill /IM anwendung.exe 
03.
set "ini=c:\del\profiles.ini" 
04.
 
05.
cls 
06.
ECHO Bitte gib nun Deinen Vornamen und Nachnamen ein. 
07.
ECHO ACHTUNG! Bitte Umlaute (Ž™š) in AE OE oder UE (ae, oe,ue) schreiben. 
08.
ECHO Beispiel: Max Müller in Max Mueller ändern! 
09.
ECHO Eingaben bitte mit ENTER (RETURN) bestätigen! 
10.
echo. 
11.
set /p vorname="Bitte deinen Vornamen eingeben: " 
12.
echo. 
13.
set /p nachname="Bitte deinen Nachnamen eingeben: " 
14.
set benutzername=%vorname%.%nachname% 
15.
 
16.
 
17.
echo Beginne! 
18.
Echo Bitte warten! 
19.
set "Von=%benutzername%@domain-gmbh.de" 
20.
set "Nach=%benutzername%@domain.de" 
21.
set "t=%temp%\text.tmp" 
22.
 
23.
For /f "UseBackQ Tokens=1,* Delims==" %%A in (%Ini%) Do Call :ProcessFile "%%B\prefs.js"  
24.
 
25.
Goto :Eof  
26.
:ProcessFile  
27.
If Not Exist %1 Echo > nul & Goto :Eof  
28.
 
29.
if exist "%t%" del "%t%" 
30.
for /f "usebackq delims=" %%k in (%1) do (set "Line=%%k" & set Line=!Line:%Von%=%Nach%! & echo !Line!>>"%t%") 
31.
move /y "%t%" "%1" 
32.
 
33.
:exit

danke, bis zum nächsten mal
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(4)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

Installation
gelöst Mit Powershell in einer Datei eine Zeile auslesen (6)

Frage von Bommi1961 zum Thema Installation ...

Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

HTML
gelöst Mit HTML Datei eine Textdatei auslesen (7)

Frage von Maffi zum Thema HTML ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (17)

Frage von Unwichtig zum Thema Netzwerkmanagement ...