zensbert
Goto Top

SID aus TXT auslesen und in Variable einlesen

Hallo,
Ich habe ein VBS-Skript, dass eine TXT ausgibt.
In der TXT stehen dann die User und deren SIDs.
Ich müsste per Batch die TXT einlesen und nur die SID selbst des aktuell angemeldeten Users in eine Variable kriegen.

Format der TXT:

Username : Administrator
SID : S-1-5-21-839522115-842925246-2147074499-500
Profile dir :

Username : ASPNET
SID : S-1-5-21-839522115-842925246-2147074499-1004
Profile dir :
.
.
.


Ohne es zu können müsste es ungefähr zumindest von der Funktionsweise her so gehen:

wo Username: %Username%, dann nächste Zeile, Wert nach SID : in Variable %User-SID%


Tausend Dank,
Bin mal gespannt ob sich jemand vor Bastla meldet^^

Gruß Thomas

Content-Key: 99510

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

Printed on: April 24, 2024 at 20:04 o'clock

Member: Biber
Biber Oct 16, 2008 at 21:05:37 (UTC)
Goto Top
Moin chizophren,

bis bastla erscheint kannst du noch ein wenig folgenden Oneliner vom CMD-Prompt aus abfeuern.
>for /f "delims=:" %i in ('findstr /n /v "^$" sids.txt^|find "ASP"') do @for /f %i in ('set /a %i+1') do for /f "delims=: tokens=3" %i in ('findstr /n /v "^$" sids.txt^|find "%i:"') do @echo Set TheSid=%i  
[ ">" ist der Prompt, nicht mit copy&pasten]
Als formatierte Batchzeile sieht dat so aus.
REM Annahme. Sids stehe in Datei sids.txt im aktuellen Verzeichnis
.....
Set "such=ASP"  
for /f "delims=:" %%i in ('findstr /n /v "^$" sids.txt^|find /i "%such%"') do (  
       for /f %%i in ('set /a %%i+1') do (   
          for /f "delims=: tokens=3" %%i in ('findstr /n /v "^$" sids.txt^|find "%%i:"') do (  
              @Set TheSid=%%i
     )))
set theSid
REM ...das letzte Set war zum Anzeigen der Variable %theSid%

Grüße
Biber

P.S. Und ja, ich habe für jede der drei FOR-Anweisungen immer wieder die Laufvariable %i bzw. %%i verwendet.
Und nein, das bedeutet nicht, dass mir langsam die Variablen ausgehen. Oder dass ich geizig wäre.
Member: bastla
bastla Oct 16, 2008 at 21:29:51 (UTC)
Goto Top
Hallo chizophren und Biber!

Da das Thema ja eigentlich schon erledigt ist, nur kurz die Frage: Warum (wenn schon mit Batch fortgesetzt werden soll) nicht einfach die VBS-Ausgabe als CSV (bzw SSV face-wink), zB:
Administrator;S-1-5-21-839522115-842925246-2147074499-500;
ASPNET;S-1-5-21-839522115-842925246-2147074499-1004;
TestUser;S-1-5-21-839522115-842925246-2147074499-4444;\\Server\Profiles$\TestUser
Wenn Du so dann alle Daten in einer Zeile zur Verfügung hast, genügt ein "findstr":
for /f "tokens=2 delims=;" %%i in ('findstr /c:"%username%" sids.txt') do set "TheSid=%%i"  

Ansonsten vielleicht noch der Hinweis auf PsGetSid - zu verwenden etwa so:
for /f %%i in ('C:\Scripts\PsGetSid %username%') do set "TheSid=%%i"  
Grüße
bastla
Member: zensbert
zensbert Oct 17, 2008 at 05:24:43 (UTC)
Goto Top
Ich weiss schon warum ich euch frage^^

Danke euch beiden bastla und biber!!!!!!
Member: ee2592
ee2592 Nov 17, 2008 at 10:43:04 (UTC)
Goto Top
Hallo,
habe zum gleichen Thema ein Problem.
Leider bin ich nicht so firm, das obige Beispiel zur Lösung meines Problems zu transformieren:

Ich benötige unter WinXP aus der Ausgabe von ipconfig in eine Textdatei ( ipconfig >ipc.txt ) die 3. Zahl der Client-IP-Nr. (sind z.T. ein-,zwei- und dreistellig) als Umgebungsvariable "Raum".

Kann mir da noch mal jemand helfen?

Dank vorab und schöne Grüße,
Ene
Member: bastla
bastla Nov 17, 2008 at 10:58:32 (UTC)
Goto Top
Hallo ee2592 und willkommen im Forum!

"Gleiches Thema" würde ich es vielleicht nicht nennen, aber anyhow - mit
@echo off & setlocal
set Raum=
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr /i "IP-Adr"') do for /f "tokens=3 delims=." %%r in ("%%i") do if not defined Raum set "Raum=%%r"  
solltest Du aus der ersten IP-Adresse (falls ein Rechner mehrere NW-Karten hat) die 3. Stelle erhalten.

Grüße
basttla