batch, string finden und erstezen
Hallo,
ich habe leider wenig ahnung von batches. ich habe eine datei, in welcher ich einen string bearbeiten möchte.
im original steht in der datei in einer zeile:
eintrag_name 4711
zwischen "eintrag_name" und dem entsprechenden value (4711) ist eine unbestimmte anzahl leerzeichen. Ich möchte diesen string in der datei finden und den value verändern (0815). leider bekomme ich das per batch nicht hin. kann mir jemand helfen?
wäre sehr sehr dankbar, habe schon viel ausprobiert, was ich hier gefunden habe. ohne erfolg.
ich habe leider wenig ahnung von batches. ich habe eine datei, in welcher ich einen string bearbeiten möchte.
im original steht in der datei in einer zeile:
eintrag_name 4711
zwischen "eintrag_name" und dem entsprechenden value (4711) ist eine unbestimmte anzahl leerzeichen. Ich möchte diesen string in der datei finden und den value verändern (0815). leider bekomme ich das per batch nicht hin. kann mir jemand helfen?
wäre sehr sehr dankbar, habe schon viel ausprobiert, was ich hier gefunden habe. ohne erfolg.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 106158
Url: https://administrator.de/contentid/106158
Ausgedruckt am: 16.11.2024 um 03:11 Uhr
16 Kommentare
Neuester Kommentar
@echo off & setlocal
set "Datei=C:\Dokumente und Einstellungen\text.txt"
set "Von=&&"
set "Nach=>"
set R=%temp%ReplaceInFile.vbs
cscript //nologo %R% "%Datei%" "%Von%" "%Nach%"
das musst du in eine bat datei stecken und die werte für dich ändern sollte dann klappen
lg Turrex
set "Datei=C:\Dokumente und Einstellungen\text.txt"
set "Von=&&"
set "Nach=>"
set R=%temp%ReplaceInFile.vbs
%R% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set a=WScript.Arguments:T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))
cscript //nologo %R% "%Datei%" "%Von%" "%Nach%"
das musst du in eine bat datei stecken und die werte für dich ändern sollte dann klappen
lg Turrex
du kannst aber das script so aufbauen:
set "Datei=C:\Dokumente und Einstellungen\text.txt"
set "Von=3000"
set "Nach=1000"
:start
set R=%temp%ReplaceInFile.vbs
cls
set "Von=4000"
set "Nach=0000"
goto :start
set "Datei=C:\Dokumente und Einstellungen\text.txt"
set "Von=3000"
set "Nach=1000"
:start
set R=%temp%ReplaceInFile.vbs
%R% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set a=WScript.Arguments:T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))
cscript //nologo %R% "%Datei%" "%Von%" "%Nach%"cls
set "Von=4000"
set "Nach=0000"
goto :start
Hallo webbudda und willkommen im Forum!
Grüße
bastla
ich kann leider nicht davon ausgehen, dass ein bestimmter wert darin steht bzw kenne ich diesen nicht.
Lässt sich demnach das Problem so formulieren: "Ändere in allen Zeilen, die mit "eintrag_name" beginnen, die letzten 4 Stellen auf einen vorgegebenen Wert"?Grüße
bastla
Hallo webbudda!
Dann könnte das etwa so gehen:
Gesucht wird nach "eintrag_name" entsprechend der exakten Schreibweise (mit Berücksichtigung von Groß- und Kleinschreibung), und die Ersetzung erfolgt "in" der Datei (ohne Erstellung einer Sicherungskopie).
Grüße
bastla
Dann könnte das etwa so gehen:
@echo off & setlocal
set "Datei=D:\Textdatei.txt"
set "Suche=eintrag_name"
set "Neu=0815"
set R=%temp%\ReplaceInFile.vbs
> %R% echo Set fso=CreateObject("Scripting.FileSystemObject"):T=Split(fso.OpenTextFile("%Datei%").ReadAll,vbCrLF):N="%Neu%"
>>%R% echo S="%Suche%":L=Len(S):For Each Z In T:If Left(Z,L)=S Then If InStrRev(Z," ")^>0 Then Z=Left(Z,InStrRev(Z," "))^&N
>>%R% echo A=A^&vbCrLF^&Z:Next:fso.CreateTextFile("%Datei%",True).Write Mid(A,3)
cscript //nologo %R%
Grüße
bastla