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

Mit Batch Text an bestimmter Stelle in anderer Batch einfügen

Frage Entwicklung Batch & Shell

Mitglied: DarkPassenger

DarkPassenger (Level 1) - Jetzt verbinden

20.01.2012 um 13:55 Uhr, 5283 Aufrufe, 5 Kommentare

Hallo zusammen,

als Ausgangspunkt dient mir folgende Frage: http://www.administrator.de/index.php?content=78739#727013.


ich bin auf diesen Eintrag gestoßen, da ich selbst ein Batch-Script schreiben muß, welches an eine gewisse Position einen bestimmten Text hängt.

Die Version von bastla habe ich genommen und für meine Zwecke etwas angepasst.... dachte auch, es würde funktionieren.

Mein Problem ist allerdings das folgende:

In meinem Fall handelt es sich um Batch-Dateien, die angepasst werden müssen. Lasse ich das Script laufen, wird auch eine Ausgabe mit eingefügtem Text erzeugt, leider werden die Sprungmarken aus der Batch ohne "Doppelpunkt" übernomme.

Also

"text"
:sprungMarke
"text"


liefert


"text"
sprungMarke
"text"

Kann mir jemand sagen, wie ich mein Script anpassen muss? Ich komme einfach nicht drauf.

Wäre für jede Hilfe äußerst dankbar!

Viele Grüße
Mitglied: Biber
20.01.2012 um 15:41 Uhr
Moin Schwarzfahrer,

willkommen im Forum.

Es existieren zwei mitgelieferte FIND-Utilities, mit denen du eine Durchnummerierung aller Zeilen erreichen kannst - FIND.exe und FINDSTR.exe.
bastla verwendete in den o.a. Skript das neuere, etwas facegeliftete namens FindStr.exe mit dieser Syntax, um alle Zeilen inkl. Leerzeilen durchzunummerieren:
[Demo am CMD-Prompt]
REM FindStr-Verwendung in einer ZEILE ...for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%TempTxt%"') ... 
d:\temp>findstr /n $ meineini.ini 
1:[MeineSection] 
2:; eine Kommentarzeile mit ein paar == (Gleichheitszeichen) == 
3:; neuevar=wert 
4:neuevar=wert
--> so wird es verwendet und in der FOR/F-Anweisung die Nummerierung wieder entfernt, allerdings dadurch, dass der ":"/Doppelpunkt als Delimiter verwendet wird.
Da du aber die Doppelpunkte erhalten miusst, weiche auf FIND aus - das bietet den Delimiter "]" für deine Zwecke an.

Leider kann FIND aber nicht nach "$" = alle Zeilen mit CRLF suchen, also suchen wir nach allen Zeilen, die ein Suchwort NICHT enthalten (mit Option /v):
[Demo am CMD-Prompt]
 
d:\temp>find /v /n "blubberlutsch" meineini.ini 
---------- MEINEINI.INI 
[1][MeineSection] 
[2]; eine Kommentarzeile mit ein paar == (Gleichheitszeichen) == 
[3]; neuevar=wert 
[4]neuevar=wert 
 
d:\temp>findstr /v /n "blubberlutsch" meineini.ini 
1:[MeineSection] 
2:; eine Kommentarzeile mit ein paar == (Gleichheitszeichen) == 
3:; neuevar=wert 
4:neuevar=wert 
--> die erste gezeigte FIND-Ausgabe enthält die Zeilennummern eingefasst in "[" und "]".
Die zweite Ausgabe (FindStr) zeigt das entsprechende Ergebnis von FindStr mit Option /v zum Vergleich.

Mit FOR /f "tokens=1* delims=]" %%i.... würdest du die wegbekommen.
Und die überflüssige Zeile "------MEINE.INI" mit einem angehängten "^|Find/V "----"

Demo
d:\temp>for /F "tokens=1* delims=]" %i in ('Find /v /n "blubberlutsch" meineini.ini^|find /v "---"') do @echo %j 
[MeineSection] 
; eine Kommentarzeile mit ein paar == (Gleichheitszeichen) == 
; neuevar=wert 
neuevar=wert
Grüße
Biber
Bitte warten ..
Mitglied: bastla
20.01.2012 um 16:59 Uhr
@Biber
Und die überflussige Zeile "------MEINE.INI" mit einem angehängten "^|Find/V "----"
... oder gleich vermeiden mit
for /F "tokens=1* delims=]" %i in ('Find /v /n "blubberlutsch"^<meineini.ini') do @echo %j
Grüße
bastla

P.S.: Und Du schreibst Deine Batches immer noch ohne Verwendung von "blubberlutsch"?
Bitte warten ..
Mitglied: Biber
21.01.2012 um 01:20 Uhr
[OT]
Moin bastla,

Zitat von bastla:
P.S.: Und Du schreibst Deine Batches immer noch ohne Verwendung von "blubberlutsch"?
Na ja, ich speichere meine Oneliner ja selten als Batch ab, deshalb musste ich die Demo ja mit einer *.ini-Datei vorkaspern..

Schönes Wochenende
Biber
[/OT]
Bitte warten ..
Mitglied: DarkPassenger
21.01.2012 um 17:30 Uhr
Hallo ihr beiden,

@Biber: VIelen Dank für deinen Code... er behebt auf jeden Fall das Problem des Entfernens der Doppelpunkte. Was jetzt leider nicht mehr funktioniert ist das Einfügen eines Textes an eine bestimmte Stelle:


Mit folgendem Code suche ich nach einer bestimmten Stelle in der Datei:

01.
  
02.
for /f "delims=:" %%i in ('findstr /n /i /b /c:"%Mark%" "%TempTxt%"') do set Zeile=%%i


es wird auch die richtige Zeile gefunden: in meinem Fall, Zeile= 178

Anschließend füge ich den Text ein, mit deinem (Biber) angepassten Code:

01.
if %Zeile%==0 goto :Rest 
02.
 
03.
for /F "tokens=1* delims=]" %%i in ('Find /v /n "blubberlutsch" "%TempTxt%"') do  if %%i leq %Zeile% echo. %%j>>%Quelle%  
Schließlich soll der Text an diese Stelle, also ab Zeile 179 eingefügt werden:

01.
for /f "tokens=*" %%A in (<$einzufügenderTxt.txt>) do echo %%A>>%Quelle%
Am Ende soll dann noch der restliche Text nach dem eingefügten Text wieder angefügt werden.

01.
:Rest 
02.
more +%Zeile% "%TempTxt%">>"%Quelle%"
Was ist das Resultat des ganzen?

Der Text wird zwar eingefügt, aber immer ans Ende der Datei... zusätzlich werden ab Zeile 179 alle anderen Zeilen nochmal hintendran gehangen.

Also:

01.
Ursprünglicher Text 800 Zeilen 
02.
 
03.
wird zu 
04.
 
05.
#Ursprünglicher Text+ 
06.
#eingefügter Text+ 
07.
#Text ab Zeile 179
Ich blicke gerade überhaupt nicht mehr durch.. bin mir sicher, dass es nur ne Kleinigkeit ist

Wenn mir einer von euch noch einmal helfen könnte, wäre echt super!

Viele Grüße
Bitte warten ..
Mitglied: bastla
21.01.2012 um 20:26 Uhr
Hallo DarkPassenger!

Wird's eventuell besser, wenn Du
for /f "tokens=1* delims=[]" %%i in ('find /v /n "blubberlutsch"^<"%TempText%"') do if %%i leq %Zeile% >>"%Quelle%" echo.%%j
verwendest (beachte den zweiten Delimiter; die anderen Änderungen sind nur Kosmetik)?
Das Einfügen der neuen Zeile (wenn diese offensichtlich aus einer Datei stammt) würde ich übrigens per
>>"%Quelle%" type $einzufügenderTxt.txt
erledigen.

Grüße
bastla
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 ...

VB for Applications
VBS Textzeile in fsx.cfg Datei an bestimmte Stelle einfügen
gelöst Frage von aletriVB for Applications6 Kommentare

Guten Abende Leute Mit dem hier aufgeführten Script möchte ich den Text "AutogenDescriptionsFilename=AutogenDescriptions_EFRO.xml" einfügen was soweit auch mit der ...

Basic
Variablen Text einfügen
gelöst Frage von TheFalconBasic14 Kommentare

Hallo zusammen, ich hab ein Makro, welches automatisch eine E-MAil verschickt nachdem man in einer Message Box einen Text ...

Batch & Shell
Batch für Textdatei - Sonderzeichen an bestimmter Stelle in fortlaufender Ausgabe
gelöst Frage von Steven123Batch & Shell4 Kommentare

Hallo Zusammen, ich habe ein Problem, bei dem ich nicht weiterkomme und Euere Hilfe benötige. Ich habe eine Textdatei, ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 23 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...