seelbreaker
Goto Top

Mehrere Wörter, Zeichen aus einer Textdatei löschen

Moin, da dies in einer WINPE Umgebung umgesetzt werden muss, bleiben mir leider nur die Batch, zusätzliche Programme die in der Batch gestartet werden könne, kann ich aber beim Start des PE von einem Share nachladen

Ich habe folgende Textdatei mit folgendem Inhalt:

SYSTEM_PROD_DATA.SysInfoSerialNum=06PCZ16
SYSTEM_PROD_DATA.SysInfoUUID=C911A40C0BEA11E1A21E5CF3FC7AC074
iSCSI.MacAddress.1=00-10-18-B7-7E-28
iSCSI.MacAddress.2=00-10-18-B7-7E-2A
iSCSI.MacAddress.3=00-10-18-B7-7E-2C
iSCSI.MacAddress.4=00-10-18-B7-7E-2E
iSCSI.MacAddress.5=5C-F3-FC-7A-C0-74
iSCSI.MacAddress.6=5C-F3-FC-7A-C0-76

Ich habe bisher immer nur das Löschen von Zeilen gefunden, was ich selber schon angewendet habe, da bei jeder Ausgabe dieser Informationen noch 3 Zeilen unnötiger Mist drinstand.

Jetzt wäre es natürlich am besten, wenn ich die Wörter vor den jeweiligen Informatione (SN, UUID und MAC-Adresse) löschen könnte. Habe gestern schon 2 Stunden lang rumprobiert mit for schleifen, find, findstr (Bei type in Verbindung mit einer Pipe zu find, hieß es nur %% kann syntaktisch nicht verwendet werden).

Bin aber zu nix gekommen, sodass ich aufgehört habe. Deshalb wende ich mich an euch liebe Community

Gibt es irgendeine Möglichkeit die unnötigen Infos (Der ganze Text vor der SN, UUID und die "-" in den MAC-Adressen) automatisiert löschen zu lassen? Das muss aus einer Batch heraus funktionieren, da ich diese Infos bei der Einrichtung von mehreren Blade-Servern erhalte und ich froh bin, dass ich diese Infos schon so "sauber" bekomme.

Gruß
Seelbreaker

Content-Key: 176985

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

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

Member: Skyemugen
Skyemugen Nov 29, 2011 at 10:54:47 (UTC)
Goto Top
Aloha,

naja, wenn du mit
for /f "usebackq tokens=2-7 delims==-" %%s in ("testdatei.txt") do >>"neue_testdatei.txt" echo %%s%%t%%u%%v%%w%%x  
arbeitest, sollte das Ergebnis doch so rauskommen, wie du es möchtest, oder?

greetz André

POC:
E:\Skripte>for /F "usebackq tokens=2-7 delims==-" %s in ("testdatei.txt") do ech
o %s%t%u%v%w%x 1>>"neue_testdatei.txt"

E:\Skripte>echo 06PCZ16 1>>"neue_testdatei.txt"

E:\Skripte>echo C911A40C0BEA11E1A21E5CF3FC7AC074 1>>"neue_testdatei.txt"

E:\Skripte>echo 001018B77E28 1>>"neue_testdatei.txt"

E:\Skripte>echo 001018B77E2A 1>>"neue_testdatei.txt"

E:\Skripte>echo 001018B77E2C 1>>"neue_testdatei.txt"

E:\Skripte>echo 001018B77E2E 1>>"neue_testdatei.txt"

E:\Skripte>echo 5CF3FC7AC074 1>>"neue_testdatei.txt"

E:\Skripte>echo 5CF3FC7AC076 1>>"neue_testdatei.txt"

E:\Skripte>type "neue_testdatei.txt"
06PCZ16
C911A40C0BEA11E1A21E5CF3FC7AC074
001018B77E28
001018B77E2A
001018B77E2C
001018B77E2E
5CF3FC7AC074
5CF3FC7AC076

E:\Skripte>pause
Drücken Sie eine beliebige Taste . . .

@Friemler, was ein Aufwand face-wink
Member: Friemler
Friemler Nov 29, 2011 at 11:07:05 (UTC)
Goto Top
Hallo Seelbreaker,

teste mal folgendes:
@echo off & setlocal

set "InFile=D:\test.txt"  
set "OutFile=D:\test_out.txt"  


(for /f "tokens=1,* delims=:" %%a in ('findstr /n "$" "%InFile%"') do (  
   for /f "tokens=1,* delims==" %%c in ("%%b") do (  
     if %%a gtr 2 (
       for /f "tokens=1-6 delims=-" %%e in ("%%d") do (  
         echo\%%e%%f%%g%%h%%i%%j
       )
     ) else (
       echo\%%d
     )
   )
 )
) > "%OutFile%"  

Die Zeilen 3 und 4 musst du anpassen. Das Script extrahiert die reinen Informationen aus der Eingabedatei, von deinen Beispieldaten würde also nur folgendes übrigbleiben:
06PCZ16
C911A40C0BEA11E1A21E5CF3FC7AC074
001018B77E28
001018B77E2A
001018B77E2C
001018B77E2E
5CF3FC7AC074
5CF3FC7AC076

Gruß
Friemler


[EDIT]
Zitat von @Skyemugen:
@Friemler, was ein Aufwand face-wink

Oder Du nimmst die Kurz-Und-Schmerzlos-Lösung von Skyemugen. face-wink
[/EDIT]
Member: Seelbreaker
Seelbreaker Nov 29, 2011 at 11:35:48 (UTC)
Goto Top
Zitat von @Skyemugen:
Aloha,

naja, wenn du mit
for /f "usebackq tokens=2-7 delims==-" %%s in ("testdatei.txt") do  
> >>"neue_testdatei.txt" echo %%s%%t%%u%%v%%w%%x  
arbeitest, sollte das Ergebnis doch so rauskommen, wie du es möchtest, oder?

greetz André



Sowas "kurzes" wäre super, wenn nicht das Problem mit der syntaktischen Stelle wäre:
C:\>for /f "usebackq tokens=2-7 delims==-" %%s in ("testdatei.txt") do >>"neue_testdatei.txt" echo %%s%%t%%u%%v%%w%%x  
"%%s" kann syntaktisch an dieser Stelle nicht verarbeitet werden.  

Das bekomme ich wenn ich es aus der CMD ausführe.

Wenn ich es aber als test.cmd speicher und ausführe, dann funktionierts... wieso den das? So hätte ich mir gestern vielleicht 2 Stunden rumprobierei sparen können face-sad

Vielen Dank dennoch! Ich teste das gleich mal mit einem Blade und melde mich ob es so für mich erfolgreich ist!
Member: Skyemugen
Skyemugen Nov 29, 2011 at 12:12:28 (UTC)
Goto Top
Aloha,

aus dem cmd geht auch nicht mit so viel Alkohol face-wink

Schau dir mal den Inhalt der Batch an und die Ausgabe (mein POC) des cmd - was fällt dir bei den Laufvariablen auf face-wink

greetz André
Member: Seelbreaker
Seelbreaker Nov 29, 2011 at 13:41:16 (UTC)
Goto Top
Moin,

Habe es vorhin in nem anderen Thread gesehen face-smile

%% in Batch und % in cmd.

Wenn ich das aber nicht irgendwie gesehen hätte, wärs mir nie aufgefallen. Dafür bleibt mir das Wissen jetzt erstmal ne zeitlang ;)

Vielen Dank!

PS: Habe übrigens deine Version genommen, weils kürzer war ;)

Trotzdem auch ein danke an Friemler, hatte schon befürchtungen, dass ich von allen Seiten in der Luft zerrissen werde face-smile

Gruß
Seel