Top-Themen

Aktuelle Themen (A bis Z)

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

Komplexen String in einer Textdatei durch einen anderen ersetzen

Frage Entwicklung Batch & Shell

Mitglied: erbertB

erbertB (Level 1) - Jetzt verbinden

20.08.2013 um 16:48 Uhr, 1514 Aufrufe, 4 Kommentare, 2 Danke

Hallo zusammen,

ich versuche ein automatisches Buildscript zur Versionserstellung unserer Software zu erstellen.
Dafür brauche ich unter anderem ein Batch welches mir in einer Textdatei eine Versionsnummer automatisch hochzählt.

Leider scheitere ich schon an den Grundlagen. Mit folgendem Code-Schnipsel versuche ich die derzeitige Version aus der Textdatei auszulesen und mit einem neuen String zu ersetzen.

Die Textdatei enthält nur:
$$ LOCAL cVersion := "V7 016.00"$$
$$ LOCAL cVersion := "V7 016.01"$$
$$ LOCAL cVersion := "V7 016.02"$$
$$ LOCAL cVersion := "V7 016.03"$$
$$ LOCAL cVersion := "V7 016.04"$$
$$ LOCAL cVersion := "V7 016.05"$$

01.
setLocal EnableDelayedExpansion 
02.
 
03.
 
04.
SET "filename=text.txt" 
05.
 
06.
SET "OldVersion=$$   LOCAL cVersion := "V7 016.03"$$" 
07.
SET "NewVersion=$$   LOCAL cVersion := "V7 016.04"$$" 
08.
 
09.
for /F "tokens=*" %%k IN (%filename%) DO ( 
10.
 
11.
	@ECHO ON 
12.
	IF %%k == %OldVersion% (ECHO TRUE) 
13.
)
Nach der Ausführung des Batchs sollte die Datei dann so aussehen:
$$ LOCAL cVersion := "V7 016.00"$$
$$ LOCAL cVersion := "V7 016.01"$$
$$ LOCAL cVersion := "V7 016.02"$$
$$ LOCAL cVersion := "V7 016.04"$$
$$ LOCAL cVersion := "V7 016.04"$$
$$ LOCAL cVersion := "V7 016.05"$$

Das haut aber nicht hin. Kann mir hiermit jemand helfen?
Mitglied: colinardo
20.08.2013, aktualisiert um 19:08 Uhr
Hallo erbertB, Willkommen im Forum.
wenn du Powershell nehmen kannst ist das nur eine Zeile:
01.
(gc "D:\test.txt") -replace 'V7 016\.03','V7 016.04' | sc "D:\test.txt"
Grüße Uwe
Bitte warten ..
Mitglied: bastla
20.08.2013, aktualisiert um 19:07 Uhr
... und wenn nicht Powershell würde ich zu VBS raten:
01.
filename = "text.txt" 
02.
OldVersion = "$$ LOCAL cVersion := ""V7 016.03""$$" 
03.
NewVersion = "$$ LOCAL cVersion := ""V7 016.04""$$" 
04.
 
05.
Set fso=CreateObject("Scripting.FileSystemObject") 
06.
T = fso.OpenTextFile(filename).ReadAll 
07.
If Instr(T, OldVersion) Then fso.CreateTextFile(filename).Write Replace(T, OldVersion, NewVersion)
Anmerkung: In einer Stringkonstanten enthaltene Anführungszeichen müssen verdoppelt werden.

Grüße
bastla

P.S.: Willkommen im Forum!
Bitte warten ..
Mitglied: Endoro
20.08.2013, aktualisiert 21.08.2013
Hallo,
ja, einen Einzeiler für das cmd Shell Fenster kann ich dir auch anbieten:
01.
for /f "delims=" %a in (file.txt) do @for /f tokens^=2delims^=^" %b in ("%a") do @if "%~b"=="V7 016.03" (echo($$ LOCAL cVersion := "V7 016.04"$$) else echo(%a
lg.

PS: hej Downvoter, lass einen Kommentar da, damit ich auch noch was lernen kann!
Bitte warten ..
Mitglied: erbertB
21.08.2013 um 16:07 Uhr
So ich hab es nun geschafft, mit PowerScript geht das wirklich einfacher als per Batch!

Ist sicherlich nicht die eleganteste Lösung aber es funktioniert, danke für die Hilfe!

01.
#Haupt Versionsname 
02.
$v = "V7 016." 
03.
#nach Versionsnummer suchen 
04.
$x= Select-String -path .\text.txt -pattern "LOCAL cVersion" 
05.
$x = $x.ToString() 
06.
#   LOCAL cVersion := "V7 016.03" 
07.
#gesamte Zeile aufspalten 
08.
$y = $x.SubString($x.length-3,3) 
09.
$x = $x.SubString($x.length-11,11) 
10.
#y wiederrum zerlegen um an die Zahl zu kommen 
11.
$y=$y.Substring(0,2) 
12.
#y in int konvertieren und um 1 erhöhen und wieder zurück 
13.
$y=[int]$y 
14.
$y=$y+1 
15.
$y=$y.ToString() 
16.
#y mit 0en auffüllen und Zeile wieder zusammensetzen 
17.
$y=$y.PadLeft(2,"0") 
18.
$y="`""+$v+$y+"`""   
19.
$x 
20.
$y 
21.
 
22.
 
23.
(gc "e:\autobuild\text.txt") -replace $x,$y | sc "e:\autobuild\text.txt"
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell - In Textdatei suchen und ersetzen
gelöst Frage von Raaja89Batch & Shell5 Kommentare

Hallo Zusammen, ich habe einen Textdatei mit vielen aufeinander folgendenden Leerzeichen und wo an diversen Stellen Überschriften stehen. Ungefähr ...

Batch & Shell
Powershell String Suchen mit Wildcard und Ersetzen
gelöst Frage von herrmanndominicBatch & Shell6 Kommentare

Hallo zusammen, ich bräuchte Unterstützung bei einem Powershell Script. Ich habe ein Java Rollout per GPO über ein PowerShell ...

Batch & Shell
String aus Spalte in csv auslesen und ersetzen
Frage von mIsSteRBatch & Shell4 Kommentare

Hallo, meine aktuelle Frage bezieht sich auf diese Frage von Dienstag. Ich muss nun eine csv auslesen und dort ...

Batch & Shell
String mit Zeilenumbruch per Bash ersetzen
gelöst Frage von StefanKittelBatch & Shell1 Kommentar

Hallo, ich möchte gerne in einer Datei einen String durch einen anderen ersetzen. Das dumme daran ist, dass ein ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 10 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 17 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 1 TagWindows 104 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 TagSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...