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, 5272 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 ..
Ähnliche Inhalte
Batch & Shell
Nummerierte dateien lücke finden .batch (2)

Frage von franky89 zum Thema Batch & Shell ...

Batch & Shell
Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

Batch & Shell
gelöst Laufwerksbezeichnung (label) in Batch als Variable nutzen (7)

Frage von tobias.mock zum Thema Batch & Shell ...

Neue Wissensbeiträge
Microsoft

Restrictor: Profi-Schutz für jedes Window

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (15)

Frage von marshall75000 zum Thema Router & Routing ...

Microsoft Office
Saubere HTML aus Word-Dokument (15)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...