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, 1495 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 ..
Ähnliche Inhalte
VB for Applications
gelöst Bestimmtes Arrayfeld mit Variable aufrufen? - VBS (10)

Frage von gabrixl zum Thema VB for Applications ...

Batch & Shell
gelöst Laufwerksbezeichnung (label) in Batch als Variable nutzen (21)

Frage von tobias.mock zum Thema Batch & Shell ...

Microsoft Office
gelöst Micorsoft Excel: Variable Anzeige von mehreren Werten anhand von Stammdaten (1)

Frage von sammy65 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (49)

Frage von sabines zum Thema Internet ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (17)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
Windows 2016 Hyper-V und VHDS (15)

Frage von emeriks zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...