Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Teile einer Zeile ausschneiden

Frage Entwicklung Batch & Shell

Mitglied: zockerg

zockerg (Level 1) - Jetzt verbinden

28.04.2008, aktualisiert 02.05.2008, 5688 Aufrufe, 13 Kommentare

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
Mitglied: miniversum
28.04.2008 um 21:08 Uhr
Versuchs mal so:
01.
@echo off 
02.
set "string=" 
03.
FOR /F "tokens=2,3* delims= " %%i in (Anfangstext.txt) do call:anhang %%i %%j "%%k" 
04.
set string=%string:~2% 
05.
echo %string%>Endtext.txt 
06.
goto:eof 
07.
 
08.
:anhang 
09.
if "%1" equ "Motherboard" ( 
10.
set string=%string%, %~2 
11.
) else ( 
12.
set string=%string%, %1 %~2 
13.
14.
goto:eof
Bitte warten ..
Mitglied: zockerg
28.04.2008 um 21:34 Uhr
o.O ne das geht irgendwie nicht
sorry bin noch totaler anfänger was solche sachen angeht
Bitte warten ..
Mitglied: zockerg
28.04.2008 um 21:35 Uhr
ne das geht irgendwie nichtt
sorry bin noch totaler anfänger
Bitte warten ..
Mitglied: miniversum
28.04.2008 um 21:38 Uhr
Was heißt irgentwie?
Kommt ne Fehlermeldung oder steht was anderes in der Datei?
Bitte warten ..
Mitglied: bastla
28.04.2008 um 21:51 Uhr
Hallo zockerg und miniversum!

Da dürften ein paar Token verrutscht sein - vielleicht geht es ja so:
01.
@echo off & setlocal 
02.
set string= 
03.
FOR /F "tokens=2,3* delims= " %%i in (Anfangstext.txt) do call:anhang %%i %%j "%%k" 
04.
echo %string:~2% >Endtext.txt 
05.
goto:eof 
06.
 
07.
:anhang 
08.
if /i "%1"=="Motherboard" ( 
09.
	set "string=%string%, %~3" 
10.
) else if /i "%1"=="CPU" ( 
11.
	set "string=%string%, %~3" 
12.
) else ( 
13.
set "string=%string%, %2 %~3" 
14.
15.
goto:eof
Grüße
bastla

[Edit] Überzähliges "%"-Zeichen in "echo"-Zeile entfernt [/Edit]
Bitte warten ..
Mitglied: zockerg
28.04.2008 um 22:40 Uhr
okay funktioniert nun.
funktioniert die batch datei, auch mit jeder beliebigem zahl die vor
den einzelnen wörtern steht?
Bitte warten ..
Mitglied: bastla
28.04.2008 um 22:47 Uhr
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:
01.
@echo off & setlocal 
02.
set "DoppelWort=Motherboard CPU" 
03.
set string= 
04.
FOR /F "tokens=2,3* delims= " %%i in (Anfangstext.txt) do call:anhang %%i %%j "%%k" 
05.
echo %string:~2% >Endtext.txt 
06.
goto:eof 
07.
 
08.
:anhang 
09.
set "string=%string%," 
10.
echo %DoppelWort%|findstr /i "%1" >nul || set "string=%string% %2" 
11.
set "string=%string% %~3" 
12.
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]
Bitte warten ..
Mitglied: zockerg
29.04.2008 um 11:51 Uhr
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
Bitte warten ..
Mitglied: bastla
29.04.2008 um 11:59 Uhr
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:
01.
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
Bitte warten ..
Mitglied: zockerg
29.04.2008 um 12:16 Uhr
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
Bitte warten ..
Mitglied: Biber
29.04.2008 um 13:00 Uhr
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
Bitte warten ..
Mitglied: zockerg
29.04.2008 um 13:26 Uhr
okay tschuldige, kommt nict mehr vor;)
Bitte warten ..
Mitglied: Biber
02.05.2008 um 19:32 Uhr
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:
01.
20:      Computername                                PC (Mein PC) 
02.
17:      Betriebssystem                                Microsoft Windows XP Professional 
03.
26:      Motherboard Name                          Unbekannt 
04.
27:      Motherboard Chipsatz                     Unbekannt 
05.
25:      CPU Typ                                           Unknown, 2400 MHz (7 x 343) 
06.
28:      Arbeitsspeicher                                2048 MB 
07.
33:      Grafikkarte                                       NVIDIA GeForce 8800 GT  (512 MB) 
08.
42:      Festplatte                                        MAXTOR STM3250310AS 
09.
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 <code>-Tags benutzen, wenn es um Bildschirmausgaben/Input-Testdateien geht.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...