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
GELÖST

Per Batch eine einzelne Zeile eines Textdokuments bearbeiten

Frage Entwicklung Batch & Shell

Mitglied: Verwirrter76

Verwirrter76 (Level 1) - Jetzt verbinden

06.02.2009, aktualisiert 22:15 Uhr, 3465 Aufrufe, 2 Kommentare

Guten Abend,

mein anliegen ist folgendes:

Ich habe hier eine Makefile.
Ich möchte gerne die Zeile 3

01.
 #		DEBUG=y					- Debug build
in

01.
#		DEBUG=n					- Debug build
umwandeln.

Dazu habe ich auch sehr lange und habe folgendes gefunden:
01.
::========================== 
02.
@echo off > newfile 
03.
setLocal EnableDelayedExpansion 
04.
 
05.
for /f "tokens=* delims= " %%a in (Makefile) do ( 
06.
if "%%a"=="#		DEBUG=y					- Debug build" ( 
07.
echo #		DEBUG=n					- Debug build >> newfile 
08.
) else ( 
09.
echo %%a >> newfile 
10.
11.
)
Soweit klappt es auch wunderbar.
Nur habe ich dann das Problem, dass alle leeren Zeilen entfernt werden. Also das es keine Abschnitte mehr gibt.

Ich vermute es liegt daran, dass die Batch die Makefile durchsucht und diese leeren Zeilen entfernt.

Dazu habe ich es auch schon mit SED probiert. Damit habe ich es aber auch nicht geschafft. Mit Windows Boardmitteln fände ich es auch besser.


Nun:
Gibt es einen Weg die Batch so zu gestalten, dass sie nur die 3 Zeile editiert?

Falls es hilft:
Nach langen googlen hatte ich eine Batch gefunden, die eine Zeile löscht. Ich habe schon versucht sie so anzupassen, dass sie die Zeile nicht löscht, sondern editiert, jedoch hat dies nicht funktioniert.

Hier der Code:
01.
@echo off & setlocal 
02.
set "InFile=Makefile" 
03.
set "OutFile=Makefile_new" 
04.
set LineToDelete=7 
05.
 
06.
if exist "%OutFile%" del "%OutFile%" 
07.
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%InFile%"^|findstr /b "%LineToDelete%:"') do findstr /v /b /c:"%%j" "%InFile%">>"%OutFile%"
Ich hoffe ich habe mich verständlich ausgedrückt. Hoffentlich könnt ihr mir bei meinen Problem weiterhelfen.
Es tut mir Leid, wenn ich euch mit meiner Frage nerve, aber so langsam bin ich hier am verzweifeln.

MFG
Mitglied: bastla
06.02.2009 um 22:29 Uhr
Hallo Verwirrter76!

Versuch es so:
01.
@echo off & setlocal 
02.
set "Old=Makefile" 
03.
set "New=newfile" 
04.
 
05.
if exist "%New%" del "%New%" 
06.
for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%Old%"') do ( 
07.
    if "%%b"=="#		DEBUG=y					- Debug build" ( 
08.
        >>"%New%" echo #		DEBUG=n					- Debug build 
09.
    ) else ( 
10.
        >>"%New%" echo\%%b 
11.
12.
)
Grüße
bastla
Bitte warten ..
Mitglied: Verwirrter76
06.02.2009 um 22:34 Uhr
Ich danke dir!
Hat sofort geklappt.

Ein super Forum ist das hier! Macht weiter so!
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Batch & Shell
Batch bestimme Zeile einer vorherigen batch einfügen (9)

Frage von Frensche zum Thema Batch & Shell ...

Batch & Shell
gelöst Mittels Batch jede Zeile einer Textdatei prüfen (4)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
Kaufberatung für mind. 8 verschiedene HighEnd-Mainboards (22)

Frage von yperiu zum Thema CPU, RAM, Mainboards ...

Mac OS X
Mac kann nicht im LAN pingen alle anderen schon (19)

Frage von smartino zum Thema Mac OS X ...

Hardware
gelöst PCI-Express-Adapterfrage (14)

Frage von DerWoWusste zum Thema Hardware ...

Linux Netzwerk
DHCP IP-vergabe erst nach 1-2 Minuten (11)

Frage von Maik82 zum Thema Linux Netzwerk ...