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

Mitglied: erbertB

erbertB (Level 1) - Jetzt verbinden

20.08.2013 um 16:48 Uhr, 1523 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
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Tipp von hardykopff vor 10 MinutenWindows 10

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 StundenAdministrator.de Feedback8 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 20 StundenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 TagGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...