103148
Goto Top

Zwei TXT Datei vergleichen und zusammen eine Liste erstellen

Hallo,

ich erstelle zwei Dateien, eine jede Abend mit dem Inhalt

online.txt

HOST PC001 ist online
HOST PC023 ist online

usw

Damit prüfe ich welcher PC Abends noch an ist, das können 10 oder auch 60 sein....

Nun möchte ich wissen, wer zuletzt an diesem Rechner gearbeitet hat, dafür erstelle ich beim Anmelden eine Liste, somit erkenne ich, welcher User an welchem PC sitzt.

mit echo %computername%_%username% >> \\server\pc2user\user.txt im Anmeldescript, läuft sehr gut.

user.txt

PC001_max
PC234_tom
PC403_fred

Jetzt möchte ich die Datei nutzen um die User in der Datei online.txt zu ergänzen, aber sie muss von "unten" gelesen da dort die aktuellen User sind.

Damit kann ich den User direkt ansprechen und ihn bitten den Rechner abends auszuschalten.

Content-Key: 233081

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

Printed on: April 25, 2024 at 19:04 o'clock

Member: bastla
bastla Mar 19, 2014 updated at 16:17:28 (UTC)
Goto Top
Hallo angebissener-apfel!

Das Ergänzen der "online.txt" (so schön finde ich deren Format nicht face-wink) würde ich durch das Erstellen einer neuen Liste ("D:\usersonline.txt") ersetzen und das dann so versuchen:
@echo off & setlocal
set "onl=D:\online.txt"  
set "usr=D:\user.txt"  
set "lst=D:\usersonline.txt"  

del "%lst%" 2>nul  
for /f "usebackq tokens=2" %%o in ("%onl%") do (  
    for /f "tokens=2 delims=_" %%u in ('findstr /ib "%%o_" "%usr%"') do >>"%lst%" echo %%o:%%u  
)
type "%lst%" 2>nul  
pause

Falls Dein
muss von "unten" gelesen
bedeutet, dass es mehrere Einträge für zB "PC001" geben kann und der letzte davon verwendet werden soll, dann eher so:
@echo off & setlocal
set "onl=online.txt"  
set "usr=user.txt"  
set "lst=useronline.txt"  

del "%lst%" 2>nul  
for /f "usebackq tokens=2" %%o in ("%onl%") do (  
    set "name="  
    for /f "tokens=2 delims=_" %%u in ('findstr /ib "%%o_" "%usr%"') do set "name=%%u"  
    setlocal enabledelayedexpansion
    if defined name >>"%lst%" echo %%o_!name!  
    endlocal
)
type "%lst%" 2>nul  
pause
Grüße
bastla
Mitglied: 103148
103148 Mar 19, 2014 updated at 19:43:22 (UTC)
Goto Top
Hallo Bastla,

ja, in der Datei user.txt werden täglich ca. 180 Einträge ergänzt. So kann es vorkommen, dass ein User vorher mal an einem anderen Rechner gearbeitet hat. Deshalb möchte ich wissen wer zuletzt am Rechner z.b PC047 gearbeitet hat, der sollte dann auch den Rechner ausschalten.
Wird ein Wert gefunden, sollte ja gefunden werden da das Anmeldescript ihn rausgibt, kann der User in der Online Liste ergänzt werden.
Machen sie aber nicht....

Die pc´s können von PC001 bis PC600 sein und wie das so ist können die User wechseln und es sind nicht immer alle an, oder auch veraltet und verschrottet. Die Liste schreibe ich seit 2 Jahren und kann erkennen wo der User vorher mal gearbeitet hat.

Im Supportfall muss ich wissen an welchen PC der User sitzt, somit gucke ich in die Liste.

SORRY....

ähm...

ich schreibe noch mehr in die user.txt....

also

%computername%_%username%_%date%_%time%

somit können die Werte date & time vernachlässigt werden

also nur der Wert der hinter %computername%.... ( sorry )


Ich teste morgen und berichte...

Danke vorab
Mitglied: 103148
103148 Mar 20, 2014 at 06:53:26 (UTC)
Goto Top
perfekt!

und vielen Dank