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

Batch oder VB - Wort an bestimmter Stelle einer Zeile einfügen

Frage Entwicklung Batch & Shell

Mitglied: SavMaz

SavMaz (Level 1) - Jetzt verbinden

14.04.2010 um 15:29 Uhr, 4646 Aufrufe, 3 Kommentare

Hallo,

nach langer Zeit stehe ich mit meinem Skript Wissen mal wieder an und hoffe hier auf Hilfe:

Ich muss in verschiedenen Config Files, die Java Startparameter enthalten, an bestimmten Stellen einen Parameter einfügen - und das natürlich per Batch oder VB ;)

die Config Datei sieht in etwa so aus:

%java% -xms256 -xmx512 -saplog -user:Username - Paramterxyz -Prefix:Name1
%java% -ParameterXXX -xms256 -xmx256 -saplog -user:Username -Prefix:Name2
....
%java% -xms256 -xmx1024 -saplog -ParamterZZZ -user:Username -Prefix:NameN

also alle zeilen etwas unterschiedlich. trotzdem soll nach jedem "-xmx[egalwelcherwert]" der Wert "-xss256" hinzugefügt werden. Leider schaffe ich es bisher nur, komplette Zeilen zu ersetzten, was hier ja nicht möglich ist. Auch mein gut funktionierendes "finadandreplace.vbs" kann ich hier nicht verwenden, da ja nach dem -xmx ein "beliebiger" Wert stehen kann. Ich suche also nach einer Lösung, welche vermutlich so aussehen müsste:

suche nach -xmx und ermittle da anzahl der folgenden Stellen bis zum nächsten BLANK
gehe dorthin und füge -xss256 ein.....

ich hoffe sehr auf eure Hilfe und bedanke mich schon mal im vorraus!

lg
Andi
Mitglied: bastla
14.04.2010 um 15:46 Uhr
Hallo SavMaz!

Mit Batch wäre das (zumindest wenn der Parameter nicht zB auch gleich nach "%java%" oder am Ende der Zeile hinzugefügt werden kann) etwas mühsam - daher ein VBScript ("Add_xss.vbs"):
01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
D = WScript.Arguments(0) 
03.
T = fso.OpenTextFile(D).ReadAll 
04.
 
05.
Set rE = New RegExp 
06.
re.Global = True 
07.
re.Pattern = "(-xmx\d*)" 
08.
 
09.
T = rE.Replace(T, "$1 -xss256") 
10.
fso.CreateTextFile(D).Write T
Aufzurufen ist das Script mit der Config-Datei als Parameter, also aus einem Batch etwa:
cscript //nologo Add_xss.vbs D:\Config.ini
Die Änderung wird "in" der Datei (ohne Erstellung einer Sicherungskopie) durchgeführt. Vorausgesetzt habe ich noch, dass auf "xmx" nur Ziffern folgen (ansonsen wäre "\d" zB durch "\S" zu ersetzen - siehe zB hier).
Als Batch-Variante (nur eine Datei zu verwalten):
01.
@echo off & setlocal 
02.
set "Datei=D:\Config.ini" 
03.
set "Such=(-xmx\d*)" 
04.
set "Ersetz=$1 -xss256" 
05.
 
06.
set A=%temp%\Add_xss.vbs 
07.
> %A% echo Set fso=CreateObject("Scripting.FileSystemObject"):D=WScript.Arguments(0):T=fso.OpenTextFile(D).ReadAll 
08.
>>%A% echo Set rE=New RegExp:re.Global=True:re.Pattern="%Such%":T=rE.Replace(T,"%Ersetz%"):fso.CreateTextFile(D).Write T 
09.
 
10.
cscript //nologo %A% "%Datei%"
Grüße
bastla
Bitte warten ..
Mitglied: SavMaz
15.04.2010 um 08:27 Uhr
Hallo bastla,

vielen dank für die rasche Hilfe - leider funktioniert keines der beiden skripts, die Datei wird zwar bearbeitet (NTFS Änderungsdatum), jedoch bleibt sie komplett unverändert!?

Und zwecks Verständniss würde mich interessieren, für was das $1 steht? Den Rest kann ich zwar halbwegs lesen, jedoch kann ich vb viel zu wenig um den "Fehler" zu finden, vielleicht kannst du nochmals darüber schauen...

Edit: Habe doch den "Fehler" entdeckt, der liegt aber bei mir bzw. einer nicht richtigen Angabe meinerseits - in der original Datei nennt sich der Parameter "-xmx128M" also doch nicht nur ziffern - bin gerade am experementieren mit den Patern-Eigenschaften, wenn ich es selbst schaffe, poste ich das Erebnis, falls nicht einen Hilfeschrei :D

Danke,
lg
Andi
Bitte warten ..
Mitglied: SavMaz
15.04.2010 um 08:52 Uhr
Hallo nochmal,

so, habe mir das Skript jetzt doch noc zurecht basteln können - code anbei, falls das nochjemand braucht. Aufruf aus Batch mit:

cscript InserWord.vbs ConfigFilename.txt Such-Pattern(lt. Link von bastla) Einzufügender Text

also hier am konkreten Beispiel
cscript InserWord.vbs Config.cfg -xmx\d*M\b -xss256M


InsertWord.vbs
01.
Set fso = CreateObject("Scripting.FileSystemObject")  
02.
  
03.
File = WScript.Arguments(0) 
04.
SearchString = WScript.Arguments(1) 
05.
AddString = WScript.Arguments(2) 
06.
  
07.
SearchString="(" & SearchString & ")" 
08.
  
09.
T = fso.OpenTextFile(File).ReadAll  
10.
  
11.
Set rE = New RegExp  
12.
re.Global = True 
13.
re.IgnoreCase = True 
14.
re.Pattern = SearchString 
15.
  
16.
T = rE.Replace(T, "$1 "&AddString)  
17.
fso.CreateTextFile(File).Write T
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Text an bestimmter Stelle einfügen
gelöst Frage von noob-xBatch & Shell2 Kommentare

Hallo bin mal wieder am Basteln, komm aber nicht weiter wie stelle ich es an dass nummer 1 immer ...

Batch & Shell
Batch bei bestimmten Wörtern jeweilige Zeile entfernen
gelöst Frage von Beginner01Batch & Shell19 Kommentare

Hallo an Alle, ich bin mal wieder einer derjenigen, die einfach keine Ahnung haben und Alles haben wollen ;-) ...

VB for Applications
Per VBScript Zeile nach bestimmter Stelle einfügen dabei mit numerierung fortfahren!
gelöst Frage von aletriVB for Applications4 Kommentare

Guten Abende allerseits Dies ist ein Auszug der Datei an der eine Zeile eingefügt werden soll:

VB for Applications
Textzeile in Datei einfügen wenn bestimmtes Wort nicht vorhanden
gelöst Frage von aletriVB for Applications9 Kommentare

Guten Abend allerseits Dieser Script fügt eine Textzeile in Datei ein aber auch dann wenn Zeile in diesem Fall ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 12 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 12 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 20 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...