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

Zeile in einer Textdatei finden und ersetzen

Frage Entwicklung Batch & Shell

Mitglied: karniggel

karniggel (Level 1) - Jetzt verbinden

28.08.2008, aktualisiert 29.08.2008, 7095 Aufrufe, 5 Kommentare

Hallo,

habe mich bereits schon durch andere Beispiele durchgesucht, bekomme aber meine Datei nicht zum Laufen;
ich hoffe Ihr könnt mir schnell helfen:

Ich möchte in einer Textdatei test.txt eine Zeile, die mit den 4 Zeichen "OBJP" beginnt durch einen anderen Text ersetzen,
hier meine Versuche:

@echo off
for /f "delims=" %%i in (test.txt) do call :block "%%i"
goto :eof

:block
set "a=%CD%"
set "zzz=%~1"
set "z=%zzz:~0,4%"
if %z% EQU "OBJP" echo "OBJP "%a% >> xxx.txt
if %z% NEQ "OBJP" echo %zzz% >> xxx.txt

Leider wird die Zeile nicht ersetzt !?

Vielen Dank schon im Voraus.
Mitglied: bastla
29.08.2008 um 00:51 Uhr
Hallo karniggel!

Vielleicht geht's so besser:
01.
@echo off & setlocal 
02.
for /f "delims=" %%i in (test.txt) do call :block "%%i" 
03.
goto :eof 
04.
 
05.
:block 
06.
set "a=%CD%" 
07.
set "zzz=%~1" 
08.
set "z=%zzz:~0,4%" 
09.
if "%z%" EQU "OBJP" echo OBJP %a% >> xxx.txt 
10.
if "%z%" NEQ "OBJP" echo %zzz% >> xxx.txt
Grüße
bastla

[Edit] @Biber: Schön, dass Du wieder da bist - aber, von wegen Rechtsüberholer - Abkürzungsbenutzer! [/Edit]
Bitte warten ..
Mitglied: Biber
29.08.2008 um 01:04 Uhr
Moin karniggel,

willkommen im Forum.

Drei Grundregeln solltest Du beim Bätchen beachten:
  • immer mit "@echo off & setlocal" beginnen, wenn Du selbst Variablen per SET definierst
  • beim Vergleichen immer Äpfel mit Äpfeln und Birnen mit Birnen vergleichen, niemals mischen
  • niemals, wirklich niemals im Bereich "Batch & Shell" schreiben: "Vielen Dank schon im Voraus"

Okay, die Verletzung der ersten und dritten Grundregel hatte im konkreten Fall keine nachhaltigen Auswirkungen, aber der Regel-2-Verstoss hat Dich reingerissen.

if %z% EQU "OBJP" echo ...
-->Selbst wenn in %z% die 4 Zeichen OBJP stehen würden, wäre der Vergleich
if OBJP EQU "OBJP" ...
...niemals erfolgreich.

Immer beiderseits eines == oder EQU oder NEQ....-Vergleichs die Werte in die gleichen Begrenzer setzen.
Das müssen keine Anführungszeichen sein, es ginge auch ein
if [%z%] EQU [OBJP} ....
Grüße
Biber
[Edit] Biber grüßt alle altbekannten und geschätzten Rechtsüberholer! *g [/Edit]
Bitte warten ..
Mitglied: karniggel
29.08.2008 um 11:41 Uhr
Vielen Dank euch beiden,
die Datei läuft super !

Habe noch ein kleines Problem - wahrscheinlich mit der echo-Ausgabe,
diese fügt am Ende jeder Zeile noch ein Leerzeichen an.
Wie bekomme ich das noch weg?
Bitte warten ..
Mitglied: bastla
29.08.2008 um 11:52 Uhr
Hallo karniggel!

ZB so:
01.
if "%z%" EQU "OBJP" >>xxx.txt echo OBJP %a% 
02.
if "%z%" NEQ "OBJP" >>xxx.txt echo %zzz%
Achte dabei darauf, dass sich nicht am Ende der Zeile noch ein Leerzeichen befindet ...

Alternativ zu der gezeigten Schreibweise könnte es auch genügen, das Leerzeichen zwischen der Variable und den Umleitungszeichen (also hier: %a% >>) zu entfernen.

Grüße
bastla
Bitte warten ..
Mitglied: karniggel
29.08.2008 um 12:07 Uhr
Klappt hervorragend,
vielen vielen Dank !!!

Grüße
karniggel
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Batch & Shell
gelöst Poweshell Script soll String ersetzen und die leere Zeile löschen (4)

Frage von Mars123 zum Thema Batch & Shell ...

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

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...