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

batch, string finden und erstezen

Frage Entwicklung Batch & Shell

Mitglied: webbudda

webbudda (Level 1) - Jetzt verbinden

15.01.2009, aktualisiert 14:37 Uhr, 5250 Aufrufe, 16 Kommentare

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.
Mitglied: Turrex0100
15.01.2009 um 14:46 Uhr
du möchtest also die zeichen 4711 durch 0215 in der datei austauschen?
Bitte warten ..
Mitglied: webbudda
15.01.2009 um 14:48 Uhr
ja richtig, sofern die 0815 da noch nicht steht.
möglich wäre aber eventuell auch, dass anstatt 4711 da eine 4710 stehen könnte. am besten die ganze zeile löschen und (möglichst an der stelle) ersetzen.
Bitte warten ..
Mitglied: Turrex0100
15.01.2009 um 14:50 Uhr
also mit batch ist das glaube ich nicht möglich du kannst jedoch ein temporäres vbs script in eine bat datei stecken
ich bastel dir ebend ein script zusammen....
Bitte warten ..
Mitglied: Turrex0100
15.01.2009 um 14:53 Uhr
@echo off & setlocal

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
Bitte warten ..
Mitglied: webbudda
15.01.2009 um 14:58 Uhr
ehm erstmal natürlich besten dank. welche werte meinst du jetzt.
set "Von=4711"

set "Nach=0815"

? würde heissen ich hätte bei 4710 den wert nicht ersetzt?
Bitte warten ..
Mitglied: Turrex0100
15.01.2009 um 15:03 Uhr
genau,
du willst ja "von" 4711 "nach" 0215
ändern.

Allerdings: Das programm funktioniert nur, wenn in der datei der "von" wert steht

lg turrex
Bitte warten ..
Mitglied: Turrex0100
15.01.2009 um 15:05 Uhr
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
>%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
Bitte warten ..
Mitglied: webbudda
15.01.2009 um 15:12 Uhr
ok super, danke erstmal.
ich kann leider nicht davon ausgehen, dass ein bestimmter wert darin steht bzw kenne ich diesen nicht. muss nur sicherstellen, dass nach dem batch der neue drin steht...
Bitte warten ..
Mitglied: Turrex0100
15.01.2009 um 15:20 Uhr
naja ich hoffe erstmal das ich dir helfen konnte...

lg
Bitte warten ..
Mitglied: bastla
15.01.2009 um 16:28 Uhr
@Turrex0100
Du bist ja ein richtiger Bastler ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
15.01.2009 um 16:31 Uhr
Hallo webbudda und willkommen im Forum!
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
Bitte warten ..
Mitglied: webbudda
15.01.2009 um 16:43 Uhr
naja fast nech, würde da 123 stehen, die letzten 3 zeichen. ist halt schwierig.
Bitte warten ..
Mitglied: Turrex0100
15.01.2009 um 17:30 Uhr
ich versuche nur zu helfen bin allerdings selbst ein neuling...

lg turrex
Bitte warten ..
Mitglied: bastla
15.01.2009 um 17:47 Uhr
Hallo webbudda!

Wie sieht's mit folgender Formulierung aus: "Ändere in allen Zeilen, die mit "eintrag_name" beginnen, alles nach dem letzten Leerzeichen auf den vorgegebenen Wert"?

Grüße
bastla
Bitte warten ..
Mitglied: webbudda
15.01.2009 um 20:28 Uhr
ja so kann man es auch formulieren.
Bitte warten ..
Mitglied: bastla
15.01.2009 um 22:30 Uhr
Hallo webbudda!

Dann könnte das etwa so gehen:
01.
@echo off & setlocal 
02.
set "Datei=D:\Textdatei.txt" 
03.
set "Suche=eintrag_name" 
04.
set "Neu=0815" 
05.
 
06.
set R=%temp%\ReplaceInFile.vbs 
07.
> %R% echo Set fso=CreateObject("Scripting.FileSystemObject"):T=Split(fso.OpenTextFile("%Datei%").ReadAll,vbCrLF):N="%Neu%" 
08.
>>%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 
09.
>>%R% echo A=A^&vbCrLF^&Z:Next:fso.CreateTextFile("%Datei%",True).Write Mid(A,3) 
10.
 
11.
cscript //nologo %R%
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV (3)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...