Batch - Werte aus erster Spalte entfernen
Moin,
ich habe eine Ausgangsdatei, die mehrere Datensätze, wie im folgenden Beispiel hat:
Ich möchte die Datei gerne so bearbeiten, dass nur in der ersten Spalte der Wert "123-" entfernt wird:
Hierbei habe ich es bereits mit nachfolgendem Code versucht, jedoch ohne Erfolg:
@echo off & setlocal enableDelayedExpansion
set "txtin=C:\Users\Test\in.txt"
set "txtout=C:\Users\Test\out.txt"
for /f "delims=" %%a in (%txtin%) do (
echo !line:123-=!
) > %textout%
Kann mir hier jemand helfen?
ich habe eine Ausgangsdatei, die mehrere Datensätze, wie im folgenden Beispiel hat:
123-Mustermann;Ja;ABC;;;;;;;;;;;;;;;
123-Mustermann;Ja;ABC;;;;;;;;;;;;;;;
123-Mustermann;Ja;ABC;;;;;;;;;;;;;;;
123-Mustermann;Ja;ABC;;;;;;;;;;;;;;;
123-Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Ich möchte die Datei gerne so bearbeiten, dass nur in der ersten Spalte der Wert "123-" entfernt wird:
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Hierbei habe ich es bereits mit nachfolgendem Code versucht, jedoch ohne Erfolg:
@echo off & setlocal enableDelayedExpansion
set "txtin=C:\Users\Test\in.txt"
set "txtout=C:\Users\Test\out.txt"
for /f "delims=" %%a in (%txtin%) do (
echo !line:123-=!
) > %textout%
Kann mir hier jemand helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 603872
Url: https://administrator.de/forum/batch-werte-aus-erster-spalte-entfernen-603872.html
Ausgedruckt am: 09.04.2025 um 01:04 Uhr
12 Kommentare
Neuester Kommentar
Zitat von @freshman2017:
Moin Thomas,
wenn ich es ausführe:
Erhalte ich folgende Ausgabe:
Wie bekomme ich das "ECHO ist ausgeschaltet (OFF)" raus?
Das bekommst du, weil du am Ende %txtin% leere Zeilen hast. Dementsprechend ist die Variable %%b am Ende leer und da steht dann nur noch Echo.Moin Thomas,
wenn ich es ausführe:
Erhalte ich folgende Ausgabe:
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
Mustermann;Ja;ABC;;;;;;;;;;;;;;;
ECHO ist ausgeschaltet (OFF)
Entweder die Leeren Zeilen löschen, oder echo %%b auf echo.%%b abändern, dann funktioniert es auch mit leeren Zeilen
(for /f "Tokens=1,* Delims=-" %%a in (%txtin%) do echo.%%b) > %txtout%
Gruß Thomas
Gibt es schon, aber das Problem bei Batch ist: Jeder Trick, um ein bestimmtes Problem zu umgehen, schafft nur immer wieder andere neue Probleme.
Batch ist nun mal ein toter Dinosaurier. Wirklich Problemfrei bekommst du das nur mit zeitgemäßen Sprachen wie Powershell gelöst
Batch ist nun mal ein toter Dinosaurier. Wirklich Problemfrei bekommst du das nur mit zeitgemäßen Sprachen wie Powershell gelöst
$txtin = "C:\Users\Test\in.txt"
$txtout = "C:\Users\Test\out.txt"
(Get-Content $txtin) -Replace '^\d{3}-' | Out-File $txtout

@echo off &setlocal
set "txtin=C:\Users\Test\in.txt"
set "txtout=C:\Users\Test\out.txt"
powershell -EP ByPass -C "(Get-Content '%txtin%') -Replace '^\d{3}-' | Out-File '%txtout%'"

Eine Frage ist gerade aufgekommen, wie kann ich das machen, dass ich die ersten 3 Zeichen, unabhängig ob es Zahlen sind, rausnehmen möchte?
Einfach den Regex anpassen.......... -Replace '^.{3}' .............
Danach bitte mal das hier durcharbeiten, dann kannst du für die Zukunft sowas von alloine
Regular Expressions
Zitat von @145916:
Der Bindestrich muss noch mitgenommen werden, sonst rasiert er ja von allen Zeilen die ersten 3 Zeichen weg........... -Replace '^.{3}' .............
-Replace '^.{3}-'
Alles was mit Batch geht, geht mit Powershell erst recht (nur viel besser)
Gruß Thomas

Zitat von @TK1987:
Der Bindestrich muss noch mitgenommen werden, sonst rasiert er ja von allen Zeilen die ersten 3 Zeichen weg.
Der Bindestrich muss noch mitgenommen werden, sonst rasiert er ja von allen Zeilen die ersten 3 Zeichen weg.
-Replace '^.{3}-'
Das hatte ich mit Absicht so geschrieben weil ich ihn bei seiner Beschreibung beim Wort genommen habe
Zitat von @freshman2017:
Eine Frage ist gerade aufgekommen, wie kann ich das machen, dass ich die ersten 3 Zeichen, unabhängig ob es Zahlen sind, rausnehmen möchte?
Ansonsten hätte er präzisere Angaben machen müssen 😉. Aber er bräuchte ja nur mal 5 Minuten in o. A. Link reinschnuppern und schon hätte sich das von selbst erledigt...Eine Frage ist gerade aufgekommen, wie kann ich das machen, dass ich die ersten 3 Zeichen, unabhängig ob es Zahlen sind, rausnehmen möchte?