zockerg
Goto Top

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?face-sad

Danke schonma im voraus

Content-ID: 86608

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

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

miniversum
miniversum 28.04.2008 um 21:08:22 Uhr
Goto Top
Versuchs mal so:
@echo off
set "string="  
FOR /F "tokens=2,3* delims= " %%i in (Anfangstext.txt) do call:anhang %%i %%j "%%k"  
set string=%string:~2%
echo %string%>Endtext.txt
goto:eof

:anhang
if "%1" equ "Motherboard" (  
set string=%string%, %~2
) else (
set string=%string%, %1 %~2
)
goto:eof
zockerg
zockerg 28.04.2008 um 21:34:56 Uhr
Goto Top
o.O ne das geht irgendwie nicht face-sad
sorry bin noch totaler anfänger was solche sachen angeht
zockerg
zockerg 28.04.2008 um 21:35:25 Uhr
Goto Top
ne das geht irgendwie nichtt face-sad
sorry bin noch totaler anfänger
miniversum
miniversum 28.04.2008 um 21:38:40 Uhr
Goto Top
Was heißt irgentwie?
Kommt ne Fehlermeldung oder steht was anderes in der Datei?
bastla
bastla 28.04.2008 um 21:51:35 Uhr
Goto Top
Hallo zockerg und miniversum!

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]
zockerg
zockerg 28.04.2008 um 22:40:25 Uhr
Goto Top
okay funktioniert nun.
funktioniert die batch datei, auch mit jeder beliebigem zahl die vor
den einzelnen wörtern steht?
bastla
bastla 28.04.2008 um 22:47:22 Uhr
Goto Top
Hallo zockerg!

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
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]
zockerg
zockerg 29.04.2008 um 11:51:02 Uhr
Goto Top
okay, das vorletzte geht, das letzte nicht, da lässt er immer den computernamen weg.
naja trotzdem danke für eure hilfe ;) kann mir jetzt vielleicht noch jemand sagen wie ich den Inhalt der Textdatei, wo die Begriffe durch ein Komma getrennt sind, nun als DAtzensatz in eine Datenbank bekommen? also ich hab im endeffekt mehrere solcher "Rechnerkomponenten"-Textdateien und will nun wenn ich eine neue mache mit dem obigen quellcode, das er diese direkt in eine bestehende Datenbank einfügt bzw. anhängt.
wär echt nett wenn man mir helfen könnte face-smile
bastla
bastla 29.04.2008 um 11:59:25 Uhr
Goto Top
Hallo zockerg!

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 
- sieht für mich Deinem gewünschten Output sehr ähnlich ...

Grüße
bastla
zockerg
zockerg 29.04.2008 um 12:16:44 Uhr
Goto Top
Also bei mir macht er immer den Computernamen weg, setzt aber allerdings das Komma dahin d.h. die Zeile beginnt direkt mit dem Komma aber ist ja auch egal :D wie bekomm ich das in eine datenbank ? ach und hab vergessen :D wenn in der ersten spalte, also der computername, beim einfügen schon vorhanden ist, soll der Datensatz einfach durch den neuen ersetz werden
Biber
Biber 29.04.2008 um 13:00:44 Uhr
Goto Top
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
  • 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
zockerg
zockerg 29.04.2008 um 13:26:11 Uhr
Goto Top
okay tschuldige, kommt nict mehr vor;)
Biber
Biber 02.05.2008 um 19:32:08 Uhr
Goto Top
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:
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
[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