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

Erstes wort aus der letzten zeile in variable

Frage Entwicklung Batch & Shell

Mitglied: nighty2kk

nighty2kk (Level 1) - Jetzt verbinden

08.04.2013, aktualisiert 16.04.2013, 1470 Aufrufe, 15 Kommentare

Hallo

ich wollte gerne mal nachfragen wie ich per batch das erste wort aus der letzten zeile einer txt datei in eine variable speichere.
habe ein script wo nur die letzte zeile ausgelesen wird. evtl kann mir das jemand umschreiben das nur das erste wort der letzten zeile ausgelesen wird.
danke


@echo off & setlocal

set "LetzteZeile="

for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "D:\Deine Datei.txt"') do set "LetzteZeile=%%j"

echo\%LetzteZeile%
Mitglied: bastla
08.04.2013, aktualisiert um 16:16 Uhr
Hallo nighty2kk und willkommen im Forum!

Wenn Du als erstes "Wort" alles bis zum ersten Leerzeichen (außer, die Zeile beginnt mit einem oder mehreren Leerzeichen, dann den Teil ab dem ersten Nicht-Leerzeichen bis zum nächsten Leerzeichen) meinst, dann etwa so:
01.
@echo off & setlocal 
02.
for /f "usebackq" %%i in ("D:\Deine Datei.txt") do set "Wort=%%i" 
03.
echo %Wort%
Genau genommen bekommst Du so das erste Wort der letzten nicht leeren (oder nur aus Leerzeichen bestehenden) Zeile.

Grüße
bastla
Bitte warten ..
Mitglied: nighty2kk
09.04.2013, aktualisiert um 09:38 Uhr
danke, mein code funktioniert soweit, jedoch hätte ich eine frage dazu.

@echo off & setlocal
for /f "usebackq" %%i in ("D:\Deine Datei.txt") do set "Wort=%%i"
find "suchwort" %Wort%.txt && goto START
goto :EOF
:START
echo test bestanden
pause

es wird in einer anderen txt datei(welche den namen der variable Wort trägt) nach "suchwort" gesucht und wenn vorhanden "test bestanden" ausgegeben.
wie mach ich es am besten das er mir "test NICHT bestanden" ausgibt wenn er nicht das "suchwort" findet?.
müsste ja mit einer IF anweisung gehen, jedoch bekomme ich das nicht so hin da "suchwort" keine variable ist.
Bitte warten ..
Mitglied: bastla
09.04.2013 um 15:00 Uhr
Hallo nighty2kk!

Einfach so:
01.
find "suchwort" %Wort%.txt && ( 
02.
    echo test bestanden 
03.
) || ( 
04.
    echo test nicht bestanden 
05.
06.
pause 
07.
goto :eof
Grüße
bastla

P.S.: Mit der Formatierung als "Code" (lässt sich auch nachträglich einfügen) sieht das doch viel besser aus, findest Du nicht?
Bitte warten ..
Mitglied: nighty2kk
15.04.2013 um 10:00 Uhr
danke, hat geklappt
Bitte warten ..
Mitglied: nighty2kk
16.04.2013 um 14:34 Uhr
nochmal eine kurze frage:

ist es möglich auch einen anderen abschnitt aus einer anderen zeile in eine variable zu definieren.
damit man sich es besser vorstellt.

abcd and 2013-03-10 01.00.00
avax and 2013-03-17 01.00.00
asdf and 2013-03-24 01.00.00
gsdg and 2013-03-31 01.00.00

quasi das datum aus der vorletzten zeile bräuchte ich.
Bitte warten ..
Mitglied: bastla
16.04.2013 um 15:12 Uhr
Hallo nighty2kk!

Woran ist die vorletzte Zeile zu erkennen (außer, dass sie tatsächlich die vorletzte Zeile - mit Inhalt - wäre)?

Wenn "vorletzte Zeile": Ließe sich dann dieses Datum auch als "zweitjüngstes" definieren (weil die Zeilen nach Datum sortiert vorliegen)?


Grüße
bastla
Bitte warten ..
Mitglied: nighty2kk
16.04.2013, aktualisiert um 15:22 Uhr
Das ist gerade das Doofe. Sie ist an nichts zu erkennen. Ich wollte zuerst die Zeilen durchzählen, aber die Textdatei ändert sich und es kommen immer neue zeilen dazu pro Woche.
Meine Idee war es einfach vom aktuellen Datum 7 abzuziehen. Funktioniert natürlich, jedoch kann es passieren das vor 7 Tagen kein neuer Eintrag dazu gekommen ist. Deswegen muss ich die vorletzte Zeile nehmen, sprich den Abschnitt mit dem Datum.
Hoffe das ist irgendwie möglich.
Bitte warten ..
Mitglied: bastla
16.04.2013 um 15:39 Uhr
... womit aber noch immer die Frage bliebe, ob der gesuchte Datumswert der zweitjüngste ist ...

Grüße
bastla
Bitte warten ..
Mitglied: nighty2kk
16.04.2013 um 15:41 Uhr
ja es ist immer das zweitjüngste
Bitte warten ..
Mitglied: nighty2kk
16.04.2013, aktualisiert um 22:21 Uhr
Hat keiner mehr eine Idee?
Mir würde noch einfallen das irgendwie man Zeile für Zeile mit einer For Schleife das Datum überprüft.
Sprich Zeile 1 das richtige Datum Ja oder Nein? Wenn nicht weiter. Also immer in 7er Schritten das Datum Zeile für Zeile zu überprüfen.
Könnte das hinhauen, was meint ihr?
Bitte warten ..
Mitglied: bastla
16.04.2013 um 22:44 Uhr
Hallo nighty2kk!

Soferne die Stellenanzahl vor den Datumswerten (in Deinem Beispiel 9 Zeichen) konstant wäre, könnte das zB so gehen:
01.
@echo off & setlocal 
02.
set "Datei=D:\Deine Datei.txt" 
03.
 
04.
set "Datum=" 
05.
for /f "skip=1 tokens=3" %%i in ('sort /r /+9 "%Datei%"') do if not defined Datum set "Datum=%%i"
Grüße
bastla
Bitte warten ..
Mitglied: rubberman
16.04.2013 um 22:54 Uhr
Hallo Zusammen,

vielleicht auch so:
01.
@echo off &setlocal 
02.
set "file=D:\Deine Datei.txt" 
03.
 
04.
setlocal EnableDelayedExpansion 
05.
for /f %%i in ('type "!file!"^|find /c /v ""') do set /a "stop = %%i - 2" 
06.
<"!file!" ( 
07.
  for /l %%i in (1 1 %stop%) do set /p "=" 
08.
  set /p "vorletzte=" 
09.
  set /p "letzte=" 
10.
11.
endlocal &set "vorletzte=%vorletzte%" &set "letzte=%letzte%" 
12.
 
13.
echo Vorletzte Zeile: %vorletzte% 
14.
echo Letzte Zeile: %letzte% 
15.
 
16.
for /f %%i in ("%vorletzte:* and =%") do echo Datum %%i 
17.
for /f %%i in ("%letzte%") do echo Wort %%i 
18.
pause
Beruht auf der Annahme, dass das "and" das erste mal vor dem Datum auftaucht.

Grüße
rubberman
Bitte warten ..
Mitglied: nighty2kk
16.04.2013 um 23:12 Uhr
ja das "and" steht immer vor dem Datum, ich werde es morgen Früh dann auf Arbeit ausprobieren.
Danke schonmal, ich geb dann Bescheid wenn es geklappt hat.
Bitte warten ..
Mitglied: nighty2kk
17.04.2013, aktualisiert um 09:35 Uhr
Der Code von bastla hat wunderbar funktioniert, vielleicht könntest du mir die 5te zeile deines codes ein wenig erklären, damit ich es besser verstehe.
danke
Bitte warten ..
Mitglied: bastla
17.04.2013, aktualisiert 03.05.2013
Hallo nighty2kk!
vielleicht könntest du mir die 5te zeile deines codes ein wenig erklären
Du kannst ja testweise einmal direkt
sort /r /+9 "D:\Deine Datei.txt"
ausführen und siehst dann, dass damit eine nach dem Datum (ab der 9. Stelle der Zeile) absteigend (wegen "/r") sortierte Liste aus der Datei erzeugt wird.

Da der zweitjüngste Wert gesucht ist, wird in der Schleife per "skip=1" die erste Zeile der durch "sort" erzeugten Ausgabe übersprungen. Mit "tokens=3" wird festgelegt, dass der 3. Teil der Zeile (Trennung anhand der Standard-Trennzeichen "Leerzeichen" und "TAB") in die Variable "%%i" übernommen werden soll.

Damit die Zuweisung zur Variablen "%Datum%" nicht bei jedem Schleifendurchlauf erneut erfolgt, wird in Zeile 4 "%Datum%" gelöscht und in der Schleife nur zugewiesen, wenn die Variable noch nicht existiert - das ist aber natürlich nur beim ersten Schleifendurchlauf der Fall, und daher wird der Wert in weiteren Durchläufen nicht mehr überschrieben.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell funktioniert nicht richtig beim Auslesen der letzten Zeile (5)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
gelöst Variable enthält nur den letzten Wert (4)

Frage von Phill93 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...