94451
Apr 06, 2011, updated at Apr 11, 2011 (UTC)
13249
15
0
User auslesen via batch und in textdatei schreiben
hallo ich möchte gerne automatisiert vom beliebigen windowspc alle vorhandenen user via batch auslesen und in eine textdatei schrieben,...
hiermit bin ich schon sehr weit gekommen,...
for /F %%i in ('net user') do echo %%i >> user_tmp.txt
jetzt hab ich aber noch zwei zeilen müll drinnen,...
Benutzerkonten
wie kann ich das rausfiltern?
ist das immer gleich? XP, windows vista windows 7?
danke
for /F %%i in ('net user') do echo %%i >> user_tmp.txt
jetzt hab ich aber noch zwei zeilen müll drinnen,...
Benutzerkonten
wie kann ich das rausfiltern?
ist das immer gleich? XP, windows vista windows 7?
danke
Please also mark the comments that contributed to the solution of the article
Content-Key: 164108
Url: https://administrator.de/contentid/164108
Printed on: April 20, 2024 at 00:04 o'clock
15 Comments
Latest comment
Hallo Roadrunner777!
Das Stichwort "
... aber falls Du das mit dem "Filtern" wörtlich verstanden wissen willst: "
Mit Deiner Schleife wirst Du allerdings nur ein (starkes) Drittel der Benutzer erhalten ...
Grüße
bastla
Das Stichwort "
skip
" sollte Dich weiter bringen ...... aber falls Du das mit dem "Filtern" wörtlich verstanden wissen willst: "
findstr /?
" (Du willst ja sicher auch die letzte Zeile noch loswerden)Mit Deiner Schleife wirst Du allerdings nur ein (starkes) Drittel der Benutzer erhalten ...
Grüße
bastla
Moin Roadrunner777,
Gute Nachrichten, schlechte Nachrichten...
Die guten zuerst
Zum Üben des Zusammenspiels einer FOR/F-Anweisung mit Find/Findstr /v ist das Beispiel gut geeignet.
Grundsächlich könntest du als prinzipiell funktinierenden Ansatz einfach alles [nacheinander] wegfiltern, was dich stört.
Beispiel am CMD-Prompt:
kannst du auch kombinieren mit einer "skip=3"-Angabe in der FOR/F-Anweisung.
Lässt sich weiter eindampfen und kürzer fassen... bekommst du hin.
Schlechte Nachricht
Wenn du mal zwei Schritt zurücktrittst und dann nochmal einen gelassenen Blick auf Input, Aufwand, maximal erreichbaren Nutzen/Output wirfst...
Hey, der Output von "Net user" ist unter Brüdern gesagt denkbar ungeeignet als Basis.
Egal, womit eine nachträgliche Strukturierung erfolgen soll.
Ist Dönekens, damit rumzualbern, besonders da du für jedes OS und jede Sprachversion damit rechnen kannst, dass es NICHT MEHR passt.
--> nimm ein anderes Tool, das die Userliste als "ein User pro Zeile" ausgibt.
Es gibt ein paar One-Trick-Tools, die (nur) das können. Deren Namen sind relativ naheliegend (netuser.exe, netusers.exe, ListUsers.exe...)-->Suchmaschine
Grüße
Biber
Gute Nachrichten, schlechte Nachrichten...
Die guten zuerst
Zum Üben des Zusammenspiels einer FOR/F-Anweisung mit Find/Findstr /v ist das Beispiel gut geeignet.
Grundsächlich könntest du als prinzipiell funktinierenden Ansatz einfach alles [nacheinander] wegfiltern, was dich stört.
Beispiel am CMD-Prompt:
net user |findstr /v "\-\-"|findstr /v "erfolgreich"|findstr /v "Benutzerkonten"
kannst du auch kombinieren mit einer "skip=3"-Angabe in der FOR/F-Anweisung.
Lässt sich weiter eindampfen und kürzer fassen... bekommst du hin.
Schlechte Nachricht
Wenn du mal zwei Schritt zurücktrittst und dann nochmal einen gelassenen Blick auf Input, Aufwand, maximal erreichbaren Nutzen/Output wirfst...
Hey, der Output von "Net user" ist unter Brüdern gesagt denkbar ungeeignet als Basis.
Egal, womit eine nachträgliche Strukturierung erfolgen soll.
Ist Dönekens, damit rumzualbern, besonders da du für jedes OS und jede Sprachversion damit rechnen kannst, dass es NICHT MEHR passt.
--> nimm ein anderes Tool, das die Userliste als "ein User pro Zeile" ausgibt.
Es gibt ein paar One-Trick-Tools, die (nur) das können. Deren Namen sind relativ naheliegend (netuser.exe, netusers.exe, ListUsers.exe...)-->Suchmaschine
Grüße
Biber
Aloha,
zusätzlich noch die Anmerkung: (weiß jetzt nicht, wie die Auflistung bei Windows XP ist)
Ohne etwas für bzw. gegen die Leerzeichen zu tun, kommt (bei WIn 7 zumindest) nicht allzuviel bei raus. ;) - aber
greetz André
P.S.: stört dich das
edit: too late ... Biber, Biber *grml* ^_^
zusätzlich noch die Anmerkung: (weiß jetzt nicht, wie die Auflistung bei Windows XP ist)
Ohne etwas für bzw. gegen die Leerzeichen zu tun, kommt (bei WIn 7 zumindest) nicht allzuviel bei raus. ;) - aber
delims
sollen dagegen gut wirken, habe ich gehörtgreetz André
P.S.: stört dich das
Der Befehl wurde erfolgreich ausgeführt.
eigentlich nicht in der txt? ^.^ - falls doch greife mal auf bastlas Hinweis mit findstr
zurück, damit kannst du dann auch etwas ausschließenedit: too late ... Biber, Biber *grml* ^_^
Hi,
vielleicht genügt dir ja die Einzeilenlösung ohne externes Tool bzw. Zusatztool?
Voraussetzung dafür ist allerdings, dass alle User, die auf dem Rechner eingerichtet sind, sich wenigstens einmal angemeldet haben, so dass das Profilverzeichnis auch existiert.
vielleicht genügt dir ja die Einzeilenlösung ohne externes Tool bzw. Zusatztool?
dir /ad /b "%homedrive%%homepath%\.." > userliste.txt
Voraussetzung dafür ist allerdings, dass alle User, die auf dem Rechner eingerichtet sind, sich wenigstens einmal angemeldet haben, so dass das Profilverzeichnis auch existiert.
Moin Kaputtnick,
Das ist zwar eine notwendige Bedingung, um diejenigen Usernamen zu erwischen, die er haben will.
Aber es ist nicht hinreichend, um die auszuschliessen, die er nicht wissen will.
[die eventuellen Diskrepanzen zwischen %userprofile% und den beiden Explorervariablen %homeBLA% sind mir nicht weiter wichtig.]
Grüße
Biber
...Voraussetzung dafür ist allerdings...sich wenigstens einmal angemeldet haben...
im Prinzip jein.... Das ist zwar eine notwendige Bedingung, um diejenigen Usernamen zu erwischen, die er haben will.
Aber es ist nicht hinreichend, um die auszuschliessen, die er nicht wissen will.
>dir /ad /b "%userprofile%\.."
Administrator --->ok
All Users -->???, na ja
Default User --->??? na ja
Biber -->ok
OtherUser --> ok
LocalService ---->?? wc ... wohl caum
NetworkService --->?? wohl caum
[die eventuellen Diskrepanzen zwischen %userprofile% und den beiden Explorervariablen %homeBLA% sind mir nicht weiter wichtig.]
Grüße
Biber
Moin Biber,
man muss ja nicht alles mundgerecht vorkauen. Manchmal reicht auch eine Anregung.
Wie man mit findstr einzelne Begriffe ausklammern kann, hast du ja in dankenswerter Weise bereits dokumentiert..
Man könnte allerdings die von dir aufgezeigte Ausgabe anschließend noch zerlegen, indem man den Ausgabestring spaltenweise trennt. Für den Usernamen sind ja gezielt feste Stellen vorgegeben.
[und um das mal klarzustellen: "alle vorhandenen User" schließt auch die ein, die DU nicht haben willst.]
Grüße
man muss ja nicht alles mundgerecht vorkauen. Manchmal reicht auch eine Anregung.
Wie man mit findstr einzelne Begriffe ausklammern kann, hast du ja in dankenswerter Weise bereits dokumentiert..
Man könnte allerdings die von dir aufgezeigte Ausgabe anschließend noch zerlegen, indem man den Ausgabestring spaltenweise trennt. Für den Usernamen sind ja gezielt feste Stellen vorgegeben.
[und um das mal klarzustellen: "alle vorhandenen User" schließt auch die ein, die DU nicht haben willst.]
Grüße
Moin Kaputtnick,
und BTW noch ein nachträgliches Willkommen im Forum,
jepp, mit diesem Nachtrag der nötigen Nachbehandlung ist dein Ansatz ein vollwertiger Ersatz für die von mir genannten One-Trick-Utilities.
Und was das Vorkauen-Müssen betrifft... okay, er hatte geschrieben, er wolle sich durchbeissen.
Vielleicht habe ich das zu leichtfertig überlesen.
Grüße
Biber
[Edit]
Dennoch:
Bei der NET USER-Anzeige werden mir zusätzlich "Gast" und "Hilfeassistent" angezeigt, nicht aber "Default User" und "All Users" oder "LocalService"...
[/Edit]
und BTW noch ein nachträgliches Willkommen im Forum,
jepp, mit diesem Nachtrag der nötigen Nachbehandlung ist dein Ansatz ein vollwertiger Ersatz für die von mir genannten One-Trick-Utilities.
Und was das Vorkauen-Müssen betrifft... okay, er hatte geschrieben, er wolle sich durchbeissen.
Vielleicht habe ich das zu leichtfertig überlesen.
Grüße
Biber
[Edit]
[und um das mal klarzustellen: "alle vorhandenen User" schließt auch die ein, die DU nicht haben willst.]
im Prinzip jein ... ich mag ja alle User, ob blond, ob rothaarig...Dennoch:
Bei der NET USER-Anzeige werden mir zusätzlich "Gast" und "Hilfeassistent" angezeigt, nicht aber "Default User" und "All Users" oder "LocalService"...
[/Edit]
Ok, 1:1
Da habe ich sogar noch ein paar mehr bei der Anzeige von net user.
Man beachte allerdings meine Einleitung:
Das war eine Frage. :-P
Grüße
Da habe ich sogar noch ein paar mehr bei der Anzeige von net user.
Man beachte allerdings meine Einleitung:
vielleicht genügt dir ja .... ?
Das war eine Frage. :-P
Grüße
Moin Roadrunner777,
nun musst du dich aber mal entscheiden, ob durchbeissen oder rentnergerecht vorgeschnitten.
Eine hausfrauensichere out-of-the-box-rundum-sorglos-Lösung würde so aussehen:
Aber derartige Jetzt-musst-du-nur-den-Guttenberg-machen-Lösungen gibts hier nicht.
Grüße
Biber
nun musst du dich aber mal entscheiden, ob durchbeissen oder rentnergerecht vorgeschnitten.
Eine hausfrauensichere out-of-the-box-rundum-sorglos-Lösung würde so aussehen:
@echo off & setlocal
set "userliste=R:\ulist.txt"
@echo Benutzerkonten auf %computername% > %userliste%
for /f "skip=4 delims=" %%a in ('net user') do call :trim "%%a"
pause
goto :eof
:trim
set user1=
set user2=
set user3=
set zeile=%~1
if "%zeile:~0,10%"=="Der Befehl" goto :eof
:: @echo zeile=%zeile%
set user1=%zeile:~0,25%
set user2=%zeile:~25,25%
set user3=%zeile:~50,25%
if defined user1 (@echo user1=%user1% & @echo %user1% >> %userliste%)
if defined user2 (@echo user2=%user2% & @echo %user2% >> %userliste%)
if defined user3 (@echo user3=%user3% & @echo %user3% >> %userliste%)
goto :eof
Aber derartige Jetzt-musst-du-nur-den-Guttenberg-machen-Lösungen gibts hier nicht.
Grüße
Biber
Moin Raodrunner777,
wenn du dabei und dadurch etwas gelernt hast, dann war es uns das wert, da kann ich für alle hier vertretenen kommentierer sprechen.
Nichtsdestotrotz - falls du in diesem hin-und herwogenden Thread nicht mehr das Gesamtbild im Blick hast...
--> Kompliziert ist es eigentlich nur dadurch geworden, dass dein Plan vorsah, aus der (dafür suboptimalen) Ausgabe des NET USER-Befehls eine verwertbare Liste alle User zu erhalten.
Nimm als eine Erfahrung mit
Hättest du gefragt
dann wären vielleicht andere Lösungen gekommen.
Grüße und dank für dein Feedback
Biber
wenn du dabei und dadurch etwas gelernt hast, dann war es uns das wert, da kann ich für alle hier vertretenen kommentierer sprechen.
Nichtsdestotrotz - falls du in diesem hin-und herwogenden Thread nicht mehr das Gesamtbild im Blick hast...
--> Kompliziert ist es eigentlich nur dadurch geworden, dass dein Plan vorsah, aus der (dafür suboptimalen) Ausgabe des NET USER-Befehls eine verwertbare Liste alle User zu erhalten.
Nimm als eine Erfahrung mit
"Hey, wenn ich fest in den Boden gerammte Vorgaben mache, dann wird mir wortwörtlich eine Lösung dazu zusammengebraten,
wie umständlich es auch sein mag."
wie umständlich es auch sein mag."
Hättest du gefragt
"Wie kann möglichst stressarm das Ziel XY erreichen, wenn ich nur Batch und zwei Büroklammern benutzen darf und kein Admin bin.",
dann wären vielleicht andere Lösungen gekommen.
Grüße und dank für dein Feedback
Biber