Teile einer Zeile ausschneiden
Hallo,
ich habe das Problem das ich, wie oben schon angegeben, gern wissen würde ich Teile einer Zeile ausschneiden kann.
Um es etwas genauer zu machen:
20: Computername PC (Mein PC)
17: Betriebssystem Microsoft Windows XP Professional
26: Motherboard Name Unbekannt
27: Motherboard Chipsatz Unbekannt
25: CPU Typ Unknown, 2400 MHz (7 x 343)
28: Arbeitsspeicher 2048 MB
33: Grafikkarte NVIDIA GeForce 8800 GT (512 MB)
42: Festplatte MAXTOR STM3250310AS
43: Festplatte Ut163 USB2FlashStorage USB Device
So sieht nun meine Anfangstext-Datei aus.
Nun möchte ich mit Hilfe einer Batch-Datei, das es später so in etwa aussieht.
Man muss dazu sagen, die Zahlen am Zeilenanfang sind mit Hilfe einer vorherigen
Batch-Datei zustande gekommen dadurch ändern sich diese ab und zu.
PC (Mein PC), Microsoft Windows XP Professional, Unbekannt, Unbekannt, Unknown, 2400 MHz (7 x 343), 2048 MB, NVIDIA GeForce 8800 GT (512 MB), MAXTOR STM3250310AS, Ut163 USB2FlashStorage USB Device
So sollte etwas später aussehen, damit ich die einzeln Wörter in eine Datenbank einfügen kann.
Kann mir da vll jemand helfen?
Danke schonma im voraus
ich habe das Problem das ich, wie oben schon angegeben, gern wissen würde ich Teile einer Zeile ausschneiden kann.
Um es etwas genauer zu machen:
20: Computername PC (Mein PC)
17: Betriebssystem Microsoft Windows XP Professional
26: Motherboard Name Unbekannt
27: Motherboard Chipsatz Unbekannt
25: CPU Typ Unknown, 2400 MHz (7 x 343)
28: Arbeitsspeicher 2048 MB
33: Grafikkarte NVIDIA GeForce 8800 GT (512 MB)
42: Festplatte MAXTOR STM3250310AS
43: Festplatte Ut163 USB2FlashStorage USB Device
So sieht nun meine Anfangstext-Datei aus.
Nun möchte ich mit Hilfe einer Batch-Datei, das es später so in etwa aussieht.
Man muss dazu sagen, die Zahlen am Zeilenanfang sind mit Hilfe einer vorherigen
Batch-Datei zustande gekommen dadurch ändern sich diese ab und zu.
PC (Mein PC), Microsoft Windows XP Professional, Unbekannt, Unbekannt, Unknown, 2400 MHz (7 x 343), 2048 MB, NVIDIA GeForce 8800 GT (512 MB), MAXTOR STM3250310AS, Ut163 USB2FlashStorage USB Device
So sollte etwas später aussehen, damit ich die einzeln Wörter in eine Datenbank einfügen kann.
Kann mir da vll jemand helfen?
Danke schonma im voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 86608
Url: https://administrator.de/contentid/86608
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo zockerg und miniversum!
Da dürften ein paar Token verrutscht sein - vielleicht geht es ja so:
Grüße
bastla
[Edit] Überzähliges "%"-Zeichen in "echo"-Zeile entfernt [/Edit]
Da dürften ein paar Token verrutscht sein - vielleicht geht es ja so:
@echo off & setlocal
set string=
FOR /F "tokens=2,3* delims= " %%i in (Anfangstext.txt) do call:anhang %%i %%j "%%k"
echo %string:~2% >Endtext.txt
goto:eof
:anhang
if /i "%1"=="Motherboard" (
set "string=%string%, %~3"
) else if /i "%1"=="CPU" (
set "string=%string%, %~3"
) else (
set "string=%string%, %2 %~3"
)
goto:eof
Grüße
bastla
[Edit] Überzähliges "%"-Zeichen in "echo"-Zeile entfernt [/Edit]
Hallo zockerg!
Allerdings wäre der Batch anzupassen, wenn Du bei weiteren Komponenten (so wie derzeit für "Motherboard" und "CPU") mehr als ein Wort (wie zusätzlich "Chipsatz" oder "Typ") nach der Zahl weglassen willst.
Damit Du das selbst machen kannst, eine andere Variante:
Wenn es also weitere Beschreibungen gibt, die aus zwei Wörtern bestehen, ist das erste der beiden Wörter in der Zeil "set DoppelWort=..." durch ein Leerzeichen getrennt hinzuzufügen.
Grüße
bastla
[Edit] Überzähliges "%"-Zeichen in "echo"-Zeile entfernt [/Edit]
funktioniert die batch datei, auch mit jeder beliebigem zahl die vor den einzelnen wörtern steht?
Die Zahl wird überhaupt nicht beachtet.Allerdings wäre der Batch anzupassen, wenn Du bei weiteren Komponenten (so wie derzeit für "Motherboard" und "CPU") mehr als ein Wort (wie zusätzlich "Chipsatz" oder "Typ") nach der Zahl weglassen willst.
Damit Du das selbst machen kannst, eine andere Variante:
@echo off & setlocal
set "DoppelWort=Motherboard CPU"
set string=
FOR /F "tokens=2,3* delims= " %%i in (Anfangstext.txt) do call:anhang %%i %%j "%%k"
echo %string:~2% >Endtext.txt
goto:eof
:anhang
set "string=%string%,"
echo %DoppelWort%|findstr /i "%1" >nul || set "string=%string% %2"
set "string=%string% %~3"
goto:eof
Grüße
bastla
[Edit] Überzähliges "%"-Zeichen in "echo"-Zeile entfernt [/Edit]
Hallo zockerg!
- sieht für mich Deinem gewünschten Output sehr ähnlich ...
Grüße
bastla
okay, das vorletzte geht, das letzte nicht, da lässt er immer den computernamen weg.
Kann ich nicht nachvollziehen - mit Deiner oben geposteten Beispielsliste als "Anfangstext.txt" wird bei mir folgende "Endtext.txt" erzeugt:PC (Mein PC), Microsoft Windows XP Professional, Unbekannt, Unbekannt, Unknown, 2400 MHz (7 x 343), 2048 MB, NVIDIA GeForce 8800 GT (512 MB), MAXTOR STM3250310AS, Ut163 USB2FlashStorage USB Device
Grüße
bastla
Liebes zockerg,
ich bin hier im Nebenbereich "Batch & Shell", der wiederum in der Vorstellungswelt der Forumsbetreiber
als Nebenarm von "Entwicklung" und "Programmierung" eingestuft wird, einer der HiWis.
Und ich sag mal so: "Batch" als untergeordneter Zweig unter "Programmierung" und diese unter "Entwicklung"
folgt einer gewissen nachvollziehbaren Logik.
Von "ich habe einen Text gefunden" in einem Nebensatz auf
"aber ist ja auch egal :D wie bekomm ich das in eine datenbank" zu kommen ist mir ein wenig zu schnell.
Kannst Du bitte
Grüße
Biber
ich bin hier im Nebenbereich "Batch & Shell", der wiederum in der Vorstellungswelt der Forumsbetreiber
als Nebenarm von "Entwicklung" und "Programmierung" eingestuft wird, einer der HiWis.
Und ich sag mal so: "Batch" als untergeordneter Zweig unter "Programmierung" und diese unter "Entwicklung"
folgt einer gewissen nachvollziehbaren Logik.
Von "ich habe einen Text gefunden" in einem Nebensatz auf
"aber ist ja auch egal :D wie bekomm ich das in eine datenbank" zu kommen ist mir ein wenig zu schnell.
Kannst Du bitte
- wenn die ursprünglich gestellte Frage beantwortet ist, den Beitrag als gelöst markieren?
- Dich dann erstmal ein Stündchen in den Schatten setzen und überlegen, ob denn schon ein Plan existiert, zu dessen Umsetzung Du hier fremde Arbeitszeiten verbrennst oder ob das alles nur Chatterei ist
- sollte entgegen meiner Einschätzung doch schon ein Plan vorhanden sein, diesen bitte in einem neuen Beitrag derart zu schildern , dass daraus hervorgeht, was vorhandener Input, gewünschter Output sowie Sinn und Zweck dieser Arie sein soll.
aber ist ja auch egal :D wie bekomm ich das in eine datenbank
Fragen dieser Sinnhaftigkeit möchte ich in diesem Nebenarm des Forums nie wieder lesen.Grüße
Biber
Na, um noch einen OT draufzusetzen,
eben, als ich diesen Beitrag schließen wollte, habe ich entdeckt, wie der Quelltext wirklich aussieht...
Dieses hier...
20: Computername PC (Mein PC)
17: Betriebssystem Microsoft Windows XP Professional
26: Motherboard Name Unbekannt
27: Motherboard Chipsatz Unbekannt
25: CPU Typ Unknown, 2400 MHz (7 x 343)
28: Arbeitsspeicher 2048 MB
33: Grafikkarte NVIDIA GeForce 8800 GT (512 MB)
42: Festplatte MAXTOR STM3250310AS
43: Festplatte Ut163 USB2FlashStorage USB Device
...als < code> formatiert:
[Anmerkung - die "feste Spaltenbreite" wird im meinem Browser leider auch mit Code-Tags nicht richtig dargestellt, ist aber hoffentlich in Ansätzen erkennbar.]
Das hätte die Verarbeitung u.U. vereinfacht ...
Deshalb meine Bitte an die nächsten Problem-Poster:
Bitte -Tags benutzen, wenn es um Bildschirmausgaben/Input-Testdateien geht.
Grüße
Biber
eben, als ich diesen Beitrag schließen wollte, habe ich entdeckt, wie der Quelltext wirklich aussieht...
Dieses hier...
20: Computername PC (Mein PC)
17: Betriebssystem Microsoft Windows XP Professional
26: Motherboard Name Unbekannt
27: Motherboard Chipsatz Unbekannt
25: CPU Typ Unknown, 2400 MHz (7 x 343)
28: Arbeitsspeicher 2048 MB
33: Grafikkarte NVIDIA GeForce 8800 GT (512 MB)
42: Festplatte MAXTOR STM3250310AS
43: Festplatte Ut163 USB2FlashStorage USB Device
...als < code> formatiert:
20: Computername PC (Mein PC)
17: Betriebssystem Microsoft Windows XP Professional
26: Motherboard Name Unbekannt
27: Motherboard Chipsatz Unbekannt
25: CPU Typ Unknown, 2400 MHz (7 x 343)
28: Arbeitsspeicher 2048 MB
33: Grafikkarte NVIDIA GeForce 8800 GT (512 MB)
42: Festplatte MAXTOR STM3250310AS
43: Festplatte Ut163 USB2FlashStorage USB Device
Das hätte die Verarbeitung u.U. vereinfacht ...
Deshalb meine Bitte an die nächsten Problem-Poster:
Bitte -Tags benutzen, wenn es um Bildschirmausgaben/Input-Testdateien geht.
Grüße
Biber