Batch ab dem 7 Buchstaben Zeile auslesen und in eine andere TXT Datei schreiben
Ich befasse mich gerade mit der Erstellung einer Batch Datei
Ich habe sämtliche Ordner in einem Verzeichnis ausgelesen und die Ordnernamen in einer TXT Datei gespeichert.
Ordner sind wie folgt in der TXT abgespeichert
Ordner_Verkauf
Ordner_Einkauf_Ware
Ordner_Verkauf
jetzt möchte ich das der String "Ordner_" aus jeder Zeile entfernt wird, so dass nur noch folgendes stehen bleibt
Verkauf
Einkauf_Ware
Verkauf
wie kann ich das machen?
Ich habe sämtliche Ordner in einem Verzeichnis ausgelesen und die Ordnernamen in einer TXT Datei gespeichert.
Ordner sind wie folgt in der TXT abgespeichert
Ordner_Verkauf
Ordner_Einkauf_Ware
Ordner_Verkauf
jetzt möchte ich das der String "Ordner_" aus jeder Zeile entfernt wird, so dass nur noch folgendes stehen bleibt
Verkauf
Einkauf_Ware
Verkauf
wie kann ich das machen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 86363
Url: https://administrator.de/forum/batch-ab-dem-7-buchstaben-zeile-auslesen-und-in-eine-andere-txt-datei-schreiben-86363.html
Ausgedruckt am: 23.12.2024 um 13:12 Uhr
5 Kommentare
Neuester Kommentar
Start > Ausführen > CMD [ok]
Help SET oder Set /?
Dort findest du Beispiele.
Help SET oder Set /?
Dort findest du Beispiele.
... bevor Du allerdings die Möglichkeiten von "set" nutzen kannst, musst Du die Namen erst einmal in eine passende Variable bringen - etwa:
Um Dein Ziel zu erreichen, kannst Du im Prinzip zwischen den beiden dargestellten Varianten "ab bestimmter Position ausgeben" (allerdings willst Du ja auch "_" nicht behalten, daher Ausgabe ab dem 8. Buchstaben bzw Überspringen der ersten 7 Zeichen) oder "Text entfernen" (genauer: durch "Nichts" ersetzen) wählen ...
Grüße
bastla
@echo off & setlocal
set "Alt=D:\Ordnernamen.txt"
set "Neu=D:\Ordnernamen_neu.txt"
if exist "%Neu%" del "%Neu%"
for /f "usebackq delims=" %%i in ("%Alt%") do call :ProcessLine "%%i"
goto :eof
:ProcessLine
set "Zeile=%~1"
::ab 8. Buchstaben ausgeben
(echo %Zeile:~7%)>>"%Neu%"
::oder
::Text "Ordner_" entfernen
(echo %Zeile:Ordner_=%)>>%Neu%
goto :eof
Grüße
bastla
Um Dein Ziel zu erreichen,
hättest du auch die Suchfunktion, beispielswiese mit dem Begriff "Dateinamen kürzen" benutzen können.
Aber das ist offenbar zuviel verlangt, und Hilfe bekommt man - wie man sieht - ja trotzdem.
Hier bekommt eben jeder den Popo abgewischt, nicht wahr, bastla?
@Maddog1982
Ich wünsche mir, dass ich mich beim nächsten Thread bei Dir bedanken kann, weil Du den Beitrag ganz von allein auf "Gelöst" gesetzt hast.
Ich danke Dir, dass Du den Beitrag ganz von allein auf "Gelöst" gesetzt hast.
Alternative zu bastlas Epos wäre übrigens folgende Zeile am CMD-Prompt:
@54487 & @popoabwischen
Mit dem Hinweis auf die Forumssuche gebe ich Dir Recht.
Das intuitive Aufrufen von "SET /?" ... na ja, das geht erst, wenn man/frau die grobe Richtung ahnt.
@bastla
Schönes Wochenende!
Grüße
Biber
[Edit]...uuups, mein Wunsch ist schon in Erfüllung gegangen. thx @Maddog1982[/Edit]
danke für deine tolle Hilfe, damit ist der Task hier gelöst
Ich danke Dir, dass Du den Beitrag ganz von allein auf "Gelöst" gesetzt hast.
Alternative zu bastlas Epos wäre übrigens folgende Zeile am CMD-Prompt:
>for /f "delims=_ tokens=1,*" %i in (D:\Eine\textdatei.xyz) do @echo %j
@54487 & @popoabwischen
Mit dem Hinweis auf die Forumssuche gebe ich Dir Recht.
Das intuitive Aufrufen von "SET /?" ... na ja, das geht erst, wenn man/frau die grobe Richtung ahnt.
@bastla
Schönes Wochenende!
Grüße
Biber
[Edit]...uuups, mein Wunsch ist schon in Erfüllung gegangen. thx @Maddog1982[/Edit]