Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

Mit Batch mehrzeilige Spalte zeilenweise auslesen und Inhalt weiterverwenden...?

Mitglied: 76623

76623 (Level 1)

18.03.2009, aktualisiert 13:22 Uhr, 5655 Aufrufe, 8 Kommentare

Hey Leute,
Auch wenn es schon -zig Beiträge ähnlicher Art gibt, iwie bin ich einfach zu unfähig die tw schon vorhandenen Lösungen an mein Batchfile anzupassen, liegt auch daran dass ich die FOR-Anweisung noch nicht zu 100% versteh, egal...

Der Titel sagt ja schon das Wesentliche, nun zu den Details:
Ich habe eine Textdatei(Bsp.txt) mit mehreren Zeilen die wie folgt formatiert ist
(reines Bsp, in Wirklichkeit handelt es sich um 100.000 Zeilen mit total unterschiedlichen Zahlen):
 
	9
Mit Worten ausgedrückt: eine einzelne Spalte mit bekannter Zeilenanzahl

Bestimmte Zahlen/Zeilen möchte ich nun nacheinander auslesen um mit ihnen weiter zu arbeiten(im Prog unten ist diese "Verarbeitung" jetzt nur ein "echo" - rein der Einfachheit halber und um die Funktion zu testen. Tatsächlich folgen div. größer/kleiner Abfragen und dann entsprechende weitere Abläufe)

Mein BatchProg schaut derzeit wie folgt aus (an Bsp.txt angepasst):
01.
@echo off 
02.
set /a counter=0 
03.
 :loop 
04.
set /a counter=%counter%+1 
05.
for /f "tokens=%counter%" %%i in (Bsp.txt) do set /a zahl=%%i 
06.
echo %zahl% 
07.
if %counter%==9 goto :ende 
08.
goto :loop 
09.
 :ende 
10.
 pause 
11.
exit
Ergebniss dieses Ablaufes ist, dass ich 9x die Zahl 9 ausgespuckt bekomme, weil es einfach jedesmal die ganze spalte runterrattert.

Falls Unklarheiten, hier noch ne Bemerkung zum besseren Verständnis meines Anliegens:

WÜRDE meine Bsp.txt so formatiert sein (alle Werte in nur einer Zeile), ...

1 2 3 4 5 6 7 8 9

... so würde mein Batchprog wie gewünscht funktionieren(Ergebnis schaut hier so aus: nacheinander werden die Zahlen 1-9 ausgespuckt, danach pause und exit), und ich könnte mit Hilfe des %Counter%s auf das gewünschte Zeichen (z.B. 3. Zahl) zugreifen und damit bei Bedarf weiterarbeiten. (z.B. IF %counter%==3 SET irgendwas_1=%zahl%... IF irgendwas_1... etc)
Aber leider ist diese Formatierung bei meiner .txt nicht der Fall.

Das diese "tokens"-Zeichenabfrage jetzt irgendwie an den Zeilenumbrüchen scheitert ist mir schon klar, nur die Frage ist: Wie mach ich das auch meinem Batchfile klar?

Danke im Vorraus für euren PRODUKTIVEN Antworten
(especially dedicated for wannabe-DrHouse)

MfG, 5chweinsbraten




[Edit Biber] Code mit Code-Tags formatiert. [/Edit]^^
Mitglied: 60730
18.03.2009 um 12:21 Uhr
Hallo Servus und auch dir ein herzhaftes Willkommen.

Mir fallen drei Dinge auf:

  • die Variable "mit der Tür ins Haus" hast du erfüllt - das ist schonmal eher ungern gelesen.
  • Dein Beitrag und deine Batch sind irgendwie "wirr" - was genau ist denn das Begehr?
  • Bitte dringendst um Hilfe !!

for /?

Gruß
[_] Benachrichtigung bei Antwort keine Arme -keine Kekse
Bitte warten ..
Mitglied: 76623
18.03.2009 um 12:58 Uhr
Hast tw recht, habs daher tw editiert damit auch jene Leute was davon haben, welche sich nicht ohne ultimativer Höflichkeitsform zurechtfinden

Mit dringendst mein ich, dass ich es blöderweise eilig habe, mit Hilfe mein ich: ich schaffs leider nicht allein

"Begehr" steht im Titel und im Rest des Beitrages, sogar sehr detailiert um Unklarheiten auszuschließen, daher mit Mörderlänge

wirre Batch ... bin eben kein Programmierer, aber so wirr kanns net sein, denn vom Prinzip funktionierts ja doch, eben nur bei Textdatein mit mehreren Zeichen die in ner einzelnen ZEILE stehen, nur gehts eben NICHT, wenn diese in ner SPALTE(immer Zeilenumbruch zw den Zeichen)stehen

Bitte um genauere Fragen zum Code, denn mit "irgendwie wirr" kann man die werdende Lösung zum Beitrag nicht wirklich vorantreiben

-Danke im Vorraus

MfG, 5chweinsbraten
Bitte warten ..
Mitglied: 60730
18.03.2009 um 16:52 Uhr
Servus,

ultimativer Höflichkeitsform

denk daran, wir sind alle auch nur Menschen und umsonst ist nicht mal der Tot, der kostet das leben.
Von daher ist es nicht wirklich ultimativ, sondern ein / das einzige was ich und einige andere bestimmt auch von demjenigen verlangen, dem wir für "umme" helfen.

Und damit du einen Einblick bekommst, wie eine Schleife funktioniert, habe ich dein Script so angepasst, das es "logischer" wird.

01.
@echo off 
02.
set /a counter=0 
03.
 :loop 
04.
set /a counter=%counter%+1 
05.
for /f %%i in (Bsp.txt) do ( 
06.
echo jetzt bin ich zum %counter% mal in der Datei und lese den Inhalt %%i && set /a zahl=%%i) 
07.
 
08.
if %counter%==9 goto :ende 
09.
goto :loop 
10.
 :ende 
11.
 pause 
12.
exit
gruß
(especially dedicated for wannabe-DrHouse)
ps:(i dont wanna be ur drill instructor - but i try my very best)
Bitte warten ..
Mitglied: bastla
19.03.2009 um 01:37 Uhr
Hallo 5chweinsbraten!

Wenn auch "wirr" nicht zutreffen mag, so fehlt mir doch in Deiner Beschreibung etwas an Zusatzinformation - insbes wieviele Zeilen Du auslesen willst und woher die Zeilennummern dafür stammen ...

Im einfachsten Fall (gesuchte Zeilen "hartcodiert") ginge es etwa so:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Datei=D:\Deine Textdatei.txt" 
03.
 
04.
set /a Z=1 
05.
for /f "usebackq delims=" %%a in ("%Datei%") do ( 
06.
    if !Z!==1 call :Verarbeitung 1 "%%a" 
07.
    if !Z!==3 call :Verarbeitung 3 "%%a" 
08.
    if !Z!==4 call :Verarbeitung 4 "%%a" 
09.
    if !Z!==7 call :Verarbeitung 7 "%%a" 
10.
    set /a Z+=1 
11.
12.
goto :eof 
13.
 
14.
:Verarbeitung 
15.
echo Zeile %1:%~2 
16.
goto :eof
Wenn es nur um wenige Zeilen geht, etwa so:
01.
@echo off & setlocal 
02.
set "Zeilen=4 7 3 1" 
03.
set "Datei=D:\Deine Textdatei.txt" 
04.
 
05.
for %%i in (%Zeilen%) do call :ProcessLine %%i 
06.
goto :eof 
07.
 
08.
:ProcessLine 
09.
set /a Z=%1-1 
10.
if %Z%==0 set /p Zeile=<"%Datei%"& goto :Verarbeitung 
11.
set Zeile= 
12.
for /f "usebackq skip=%Z% delims=" %%a in ("%Datei%") do if not defined Zeile set "Zeile=%%a" 
13.
 
14.
:Verarbeitung 
15.
echo Zeile %1: %Zeile% 
16.
goto :eof
oder so:
01.
@echo off & setlocal 
02.
set "Zeilen=4: 7: 3: 1:" 
03.
set "Datei=D:\Deine Textdatei.txt" 
04.
 
05.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Datei%"^|findstr /b "%Zeilen%"') do echo Zeile %%i: %%j
Grüße
bastla
Bitte warten ..
Mitglied: 60730
20.03.2009 um 10:22 Uhr
Servus 5chweinsbraten,

auch wenn es "blöd" ist:

zuerst einmal das Lob.

  • schön - dass du deinen Beitrag etwas geändert hast.

Aber....

  • schade, das dein Beitrag - ast genau dem entspricht, den ich "erwartet" habe:
5chweinsbraten am 18.03.2009 um 11:45:28 Uhr.
/Snip
\snap
Bitte dringendst um Hilfe !!


Das du meine Hilfe nicht akzepzierst - weil Sie eine Hilfestellung eine andere als die gesuchte ist - eh klar.

Aber daß Kollege Bastla seit 19.03.2009 um 01:37:20 Uhr auf ein Feedback wartet - oder auch nicht - ist dann irgendwie traurig.

Have a nice weekend und nimm das mal alles in ruhiger Umgebung so an, wie es gemeint ist.

Gruß
Bitte warten ..
Mitglied: bastla
20.03.2009 um 16:25 Uhr
@TimoBeil
Aber daß Kollege Bastla seit 19.03.2009 um 01:37:20 Uhr auf ein Feedback wartet - oder auch nicht
"Warten" wäre übertrieben - ist bei 5chweinsbraten wohl eine der Situationen, die zeigen, wie schnell sich Prioritäten verschieben können (oder es war nach doch beinahe 14 Stunden bereits viel zu spät).

Grüße
bastla
Bitte warten ..
Mitglied: Biber
20.03.2009 um 16:37 Uhr
<OT II>
Aber daß Kollege Bastla seit 19.03.2009 um 01:37:20 Uhr auf ein Feedback wartet ...

Erfahrungsgemäß wartet Kollege bastla jetzt in der Fastenzeit nur auf eines.... das Ende derselben.
Bzw. wir alle warten jetzt auf Schweinsbraten... *gg

Und niemand sollte sollte jetzt das Wort "Feed" wie in "Feedback" erwähnen....

... oder Festplatten...

unangenehme Assoziationen..


</OT II>

Schönes Wochenende und nehmts leicht
Biber
Bitte warten ..
Mitglied: bastla
20.03.2009 um 16:42 Uhr
@Biber
No problem - wozu habe ich das Sternzeichen Phlegmadicker ...

Auch Dir ein schönes Wochenende
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch: Textdatei Zeilenweise auslesen
gelöst Frage von CreatorXBatch & Shell2 Kommentare

Hallo, ich weiß, zu dem Thema gibt es schon unzählige Threads. Ich hab auch einiges dazu gefunden und trotzdem ...

Batch & Shell
Batch Datei - Mehrzeilige Textdatei
gelöst Frage von SchmakusBatch & Shell5 Kommentare

Hallo Zusammen, ich möchte mit einer Batch Datei eine Textdatei erstellen. Ich verwende 2 Variablen (%1, %2). Die Textdatei ...

Batch & Shell
(BATCH:) Zeilenweise Txt auslesen und in eine Variable speichern
gelöst Frage von NincedBatch & Shell20 Kommentare

Hallo Leute, Ich weiß, es ist ein alter Hut, aber ich habe da ein paar Fragen bezüglich der for-Schleife ...

Batch & Shell
Batch Textdatei zeilenweise auslesen und als Variabel setzen
gelöst Frage von m.fesslerBatch & Shell2 Kommentare

Hallo, kann mir bitte jemand auf die Sprünge helfen wie ich eine Textdatei zeilenweise auslesen und diese als verschiedene ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 14 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit25 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...