dr.bit
Goto Top

Batch zum Zeilen löschen

Hi Folks,

ich bekomme es mal wieder nicht hin. 😢

Mir fehlt einfach das Verständnis, wie ich anfangen soll. Für die Fachleute hier ist das wahrscheinlich nur ein Zweizeiler. face-smile

Ich brauche ein Batch die aus einer .ini die kompletten Zeilen mit der Nummer 20100 am Anfang jeder Zeile löscht. Es muß eine batch sein und darf kein Powershell sein.
Wie gesagt ich habe null Plan und langsam ist mir das auch etwas peinlich.

Danke im voraus.

🖖

Content-Key: 604642

Url: https://administrator.de/contentid/604642

Printed on: April 23, 2024 at 10:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Sep 15, 2020 updated at 20:10:48 (UTC)
Goto Top
Member: erikro
erikro Sep 15, 2020 at 20:10:27 (UTC)
Goto Top
Moin,

für alle, die es doch mit der PS machen wollen:
https://devblogs.microsoft.com/scripting/use-powershell-to-work-with-any ...

face-wink

Liebe Grüße

Erik
Member: Dr.Bit
Dr.Bit Sep 16, 2020 at 05:30:14 (UTC)
Goto Top
Danke, aber sollte schon mit Bordmitteln sein. Ist ein Win XP an einer Fertigungsmaschine. Daher auch kein powershell.

🖖
Mitglied: 145916
145916 Sep 16, 2020 updated at 06:19:46 (UTC)
Goto Top
wahrscheinlich nur ein Zweizeiler.
Nee, das wär zu viel des Guten face-smile
findstr /blvc:"20100" datei.ini >datei_neu.ini  
Member: Dr.Bit
Dr.Bit Sep 16, 2020 at 06:58:21 (UTC)
Goto Top
Zitat von @145916:

> findstr /blvc:"20100" datei.txt >datei_neu.txt  
> 

Danke, das funktioniert schon recht gut, und ist ja tatsächlich sogar nur ein Einzeiler face-smile Allerdings noch nicht ganz so wie es soll. Die original Datei heißt LINIE02092020PRODUKT51154.txt wobei sich das 02092020 monatlich ändert. Also gebe ich findstr /blvc:"20100" LINIE02092020PRODUKT51154.txt >datei_neu.txt und bekomme es so wie es soll.

richtig

Da sich aber das Datum monatlich ändert, dachte ich ich wäre schlau und gebe findstr /blvc:"20100" LINIE*.txt >datei_neu.txt ein. Dann bekomme ich aber das:

falsch

Er schreibt mir also in jede Zeile den Original Dateinamen mit rein. Das soll natürlich nicht sein. War ich also doch nicht so schlau face-smile. Wie fange ich das jetzt noch ab bzw. wie setze ich für das wechselnde Datum eine Platzhalter im Script?

🖖
Mitglied: 145916
Solution 145916 Sep 16, 2020 updated at 07:12:36 (UTC)
Goto Top
Hätte man ja eigentlich auch gleich in den ersten Post schreiben können ... aber et trröppelt halt mal wieder so rein, ist ja nix neues hier.
Bidde, auch das ist n' Einzeiler
for %%a in ("d:\Ordner\*.ini") do findstr /blvc:"20100" "%%a" >"%%~na_neu.ini"  
Member: Dr.Bit
Dr.Bit Sep 16, 2020 at 08:09:10 (UTC)
Goto Top
Zitat von @145916:

Hätte man ja eigentlich auch gleich in den ersten Post schreiben können ... aber et trröppelt halt mal wieder so rein, ist ja nix neues hier.
Bidde, auch das ist n' Einzeiler
> for %%a in ("d:\Ordner\*.ini") do findstr /blvc:"20100" "%%a" >"%%~na_neu.ini"  
> 
Danke, hat super geklappt, einzig, daß er einen anderen Dateinamen nimmt ist nicht so schön aber für die Funktion unerheblich.

🖖
Member: miniversum
miniversum Sep 16, 2020 at 13:42:40 (UTC)
Goto Top
Hallo,

na du kannst ja dann die alte Datei löschen (oder umbenennen) und der neuen Datei den Namen der original Datei geben ...

Gruß
...
Member: erikro
erikro Sep 16, 2020 at 18:21:01 (UTC)
Goto Top
Moin,

Zitat von @miniversum:
na du kannst ja dann die alte Datei löschen (oder umbenennen) und der neuen Datei den Namen der original Datei geben ...

Dann hätten wir einen Vierzeiler:

for %%a in ("d:\Ordner\*.ini") do (  
   findstr /blvc:"20100" "%%a" >"%%~na_neu.ini"  
   del /f "%%a"  
   rename "%%~na_neu.ini" "%%a"  
)

hth

Erik
Member: Dr.Bit
Dr.Bit Sep 17, 2020 at 06:28:32 (UTC)
Goto Top
Zitat von @miniversum:

Hallo,

na du kannst ja dann die alte Datei löschen (oder umbenennen) und der neuen Datei den Namen der original Datei geben ...

Gruß
...

Dann kann ich Datei auch gleich von Hand editieren, wenn ich sie sowieso anfassen muß. Das Script läuft übrigens automatisiert. Der Unterstrich wird bei der Auswertung scheinbar ignoriert. Also alles Gut. face-smile


Zitat von @erikro:

Moin,

Zitat von @miniversum:
na du kannst ja dann die alte Datei löschen (oder umbenennen) und der neuen Datei den Namen der original Datei geben ...

Dann hätten wir einen Vierzeiler:

> for %%a in ("d:\Ordner\*.ini") do (  
>    findstr /blvc:"20100" "%%a" >"%%~na_neu.ini"  
>    del /f "%%a"  
>    rename "%%~na_neu.ini" "%%a"  
> )
> 

hth

Erik

Ist ein Fünfzeiler face-smile Aber dennoch sehr brauchbar. Hab da noch ein ähnliches Problem das ich damit fast erschlagen könnte. Danke.

🖖
Member: Lochkartenstanzer
Lochkartenstanzer Sep 17, 2020 updated at 06:35:57 (UTC)
Goto Top
Zitat von @Dr.Bit:

Ist ein Fünfzeiler face-smile Aber dennoch sehr brauchbar. Hab da noch ein ähnliches Problem das ich damit fast erschlagen könnte. Danke.


Mit Sed ist es ein Einzeiler
for %%a in ("d:\Ordner\*.ini") do sed.exe -e "/^20100/d" -i %%a

llap

lks
Member: Dr.Bit
Dr.Bit Sep 17, 2020 at 06:51:31 (UTC)
Goto Top
sed.exe ist aber kein Boardmittel, wenn ich das richtig überblicke.

🖖
Member: Lochkartenstanzer
Lochkartenstanzer Sep 17, 2020 updated at 07:07:36 (UTC)
Goto Top
Zitat von @Dr.Bit:

sed.exe ist aber kein Boardmittel, wenn ich das richtig überblicke.


Nein, aber ein kleines Progrämmchen, das schnell geladen und eingerichtet ist (keine Installation notwendig). Spart viel Zeit.

lks

PS: wenn man WSL installiert hat, ist es ein Windows-Bordmittel face-smile
Mitglied: 145916
145916 Sep 17, 2020 updated at 08:50:08 (UTC)
Goto Top
Oder man nimmt gleich die Powershell die ist immer mit an Bord.
ls 'd:\ordner\LINIE*.ini' -File | %{(gc $_.Fullname) | ?{$_ -notmatch '^20100'} | sc $_.Fullname}  

Gönnt Batch langsam seinen wohl verdienten Ruhestand...
Member: miniversum
miniversum Sep 17, 2020 at 09:50:38 (UTC)
Goto Top
Zitat von @Dr.Bit:

Zitat von @miniversum:

Hallo,

na du kannst ja dann die alte Datei löschen (oder umbenennen) und der neuen Datei den Namen der original Datei geben ...

Gruß
...

Dann kann ich Datei auch gleich von Hand editieren, wenn ich sie sowieso anfassen muß. Das Script läuft übrigens automatisiert. Der Unterstrich wird bei der Auswertung scheinbar ignoriert. Also alles Gut. face-smile


Zitat von @erikro:

Moin,

Zitat von @miniversum:
na du kannst ja dann die alte Datei löschen (oder umbenennen) und der neuen Datei den Namen der original Datei geben ...

Dann hätten wir einen Vierzeiler:

>> for %%a in ("d:\Ordner\*.ini") do (  
>>    findstr /blvc:"20100" "%%a" >"%%~na_neu.ini"  
>>    del /f "%%a"  
>>    rename "%%~na_neu.ini" "%%a"  
>> )
>> 

hth

Erik

Ist ein Fünfzeiler face-smile Aber dennoch sehr brauchbar. Hab da noch ein ähnliches Problem das ich damit fast erschlagen könnte. Danke.

🖖

Na wir wollen mal nicht so kleinlich sein. Die initiale Aufgabe geht ja in nem Einzeiler. Aber wenn es sein muss dann eben so:
for %%a in ("d:\Ordner\*.ini") do findstr /blvc:"20100" "%%a" >"%%~na_neu.ini" && del /f "%%a" && rename "%%~na_neu.ini" "%%a"
Dann hast du sogar noch da sErrorhandling mit drin face-wink

Gruß
...
Member: Dr.Bit
Dr.Bit Sep 17, 2020 at 12:10:36 (UTC)
Goto Top
Zitat von @145916:

Oder man nimmt gleich die Powershell die ist immer mit an Bord.
> ls 'd:\ordner\LINIE*.ini' -File | %{(gc $_.Fullname) | ?{$_ -notmatch '^20100'} | sc $_.Fullname}  
> 

Gönnt Batch langsam seinen wohl verdienten Ruhestand...

Auf Win XP?

🖖
Member: Dr.Bit
Dr.Bit Sep 17, 2020 at 12:13:10 (UTC)
Goto Top
Zitat von @miniversum:

Na wir wollen mal nicht so kleinlich sein. Die initiale Aufgabe geht ja in nem Einzeiler. Aber wenn es sein muss dann eben so:
for %%a in ("d:\Ordner\*.ini") do findstr /blvc:"20100" "%%a" >"%%~na_neu.ini" && del /f "%%a" && rename "%%~na_neu.ini" "%%a"
Dann hast du sogar noch da sErrorhandling mit drin face-wink

Wenn ich mal groß bin, will ich das auch können. face-smile Obwohl, ich schrumpfe ja schon wieder.😊

🖖
Mitglied: 145916
145916 Sep 17, 2020 updated at 12:15:56 (UTC)
Goto Top
Zitat von @Dr.Bit:
Auf Win XP?
Auf XP nat. nur nach Nachrüstung des MGMT-Frameworks.
Member: erikro
erikro Sep 17, 2020 at 14:35:21 (UTC)
Goto Top
Zitat von @Dr.Bit:


Ist ein Fünfzeiler face-smile Aber dennoch sehr brauchbar. Hab da noch ein ähnliches Problem das ich damit fast erschlagen könnte. Danke.

Naja, eine einzelne Klammer in der Zeile, zähle ich nicht als Zeile. face-wink Gerne