Top-Themen

Aktuelle Themen (A bis Z)

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

Was macht dieses Script?

Frage Entwicklung Batch & Shell

Mitglied: Casper2k

Casper2k (Level 1) - Jetzt verbinden

28.12.2007, aktualisiert 02.01.2008, 4127 Aufrufe, 11 Kommentare

Hallo Leute,

habe einen Codeschnipsel gefunden in dem ich aber nicht wirklich durchblicke.

Ich bin gerade dabei mir ein Script für eine Serverwartung zusammenzubauen.

In diesem Scriptabschnitt möchte ich das Profilverzeichnis leeren; d.h. alle Userprofile
ausser dem Admin, dem Tester, dem Default User und dem All Users sollen gelöscht werden.

Ich dachte eigentlich dass der unten beschriebene Code das machen würde. Wirklich kapieren
was das Script tut, weiss ich aber auch nicht. Kann mir da mal jemand auch die Sprünge helfen?

01.
FOR /F "Delims= Tokens=1*" %%a IN ('DIR /B "%systemdrive%\Dokumente und Einstellungen\"') DO ( 
02.
IF /I NOT "%%a"=="Default User" FOR /F "Delims= Tokens=1*" %%b IN ('ECHO %%a') DO ( 
03.
IF /I NOT "%%a"=="All Users" FOR /F "Delims= Tokens=1*" %%c IN ('ECHO %%a') DO ( 
04.
IF /I NOT "%%a"=="Tester" FOR /F "Delims= Tokens=1*" %%c IN ('ECHO %%a') DO ( 
05.
IF /I NOT "%%a"=="Administrator" RD /s /q "%systemroot%\Dokumente und Einstellungen\%%a" >> %LogPath%\Reboot.log 
06.
07.
08.
09.
delprof.exe /Q /I
thx
Casper2k
Mitglied: Dani
28.12.2007 um 12:03 Uhr
Hi Casper,
war das Script wirklich so oder hast du dich schon dran versucht. Also wenn das Profile löschen soll, dann fress ich ein Besen. Erstmal hat die Variable "systemroot" da gar nicht verloren, denn die hat den Wert "C:\Windows", somit schon mal ganz falsche Spur.

Für was die Schleifen, hinter jeder Abfrage sinnvoll sein soll, kapiere ich auch noch nicht ganz. Denn eigentlich wird das mit der IF-Abfrage erschlagen.

Hier mal Script (leicht verändert):
01.
@echo off 
02.
 
03.
for /f "delims=" %%a in ('dir /b "%systemdrive%\Dokumente und Einstellungen\"')do ( 
04.
	if /i "%%a" NEQ "Default User" ( 
05.
		if /i "%%a" NEQ "All Users" ( 
06.
			if /i "%%a" NEQ "Tester" ( 
07.
				if /i "%%a" NEQ "Administrator" echo /s /q "%systemdrive%\Dokumente und Einstellungen\%%a" >> c:\Reboot.log 
08.
09.
10.
11.
)
Biber würde sowas als Onliner schreiben, nicht war? Er schaut bestimmt noch vorbei....

Für was die delprof.exe da sein soll, darfst micht nicht fragen. Vom Namen her, würde ich sagen "Profil löschen". Jedoch würde das kein Sinn machen, da "rd" das schon macht.


Grüße
Dani
Bitte warten ..
Mitglied: Casper2k
28.12.2007 um 13:20 Uhr
Hallo und danke für deine Antwort.

ich blick da auch nicht ganz durch.

delprof kommt von M$ und löscht inaktive Profile raus. Das ist kein Problem.

Ich möchte aber eigentlich erreichen dass alle Userprofile gelöscht werden
ausser die genannten. alles andere soll einfach weggelöscht werden.
ich denke das es mit rd nicht funktioniert, da die ntuser.dat usw teilweise noch
im zugriff sind und nicht einfach so weggelöscht werden können.
Bitte warten ..
Mitglied: Dani
28.12.2007 um 13:33 Uhr
Hi,
Ich möchte aber eigentlich erreichen dass alle Userprofile gelöscht werden
ausser die genannten. alles andere soll einfach weggelöscht werden.
Dies geschieht mit meinem Script oben. "rd" funktioniert sehr gut damit....ich habe nämlich außvversehen meine anderen User damit abgeschlossen. *g*

Wann soll das Script ausgeführt werden bzw. wo? Domäne oder Arbeitsgruppe beim Starten oder Abmelden, etc...Fragen über Fragen.


Grüße
Dani
Bitte warten ..
Mitglied: Casper2k
28.12.2007 um 14:04 Uhr
Wann soll das Script ausgeführt werden
bzw. wo? Domäne oder Arbeitsgruppe beim
Starten oder Abmelden, etc...Fragen über
Fragen.



Das Script soll während der wöchentlichen Serverreboots
ablaufen.
Hab schon ein Wartungsscript welches unterschiedlichste
Dinge aufräumt und die Profil Geschichte soll da eben auch
noch mit rein. Die Server um die es sich handelt, sind alles
W2k3 mit Citrix PS3.
Es sollen jedoch nur die lokal gespeicherten Profilpfade gelöscht
werden (bis auf die Ausnahmen).
Bitte warten ..
Mitglied: Dani
28.12.2007 um 14:18 Uhr
Na also, dann kommt dir die ntuser.dat nicht in die Gwehre. Denn beim Restart, ist ja keiner der User schon mal angemeldet gewesen. Es sollte eben mit Adminrechten laufen bzw. unter einem Adminkonto. Sonst wird das nichts....!


Grüße
Dani
Bitte warten ..
Mitglied: Casper2k
28.12.2007 um 17:59 Uhr
Das Script wird nach dem Neustart per Autoexnt ausgeführt...
aber das sollte eigentlich hinhauen. ich teste das nächste woche
mittwoch mal...
Bitte warten ..
Mitglied: Biber
29.12.2007 um 12:44 Uhr
Moin Casper2k,

ich schließe mich Danis Ausführungen an - das Skript ganz oben ist Blödsinn bzw. zu umständlich.

Folgende drei Varianten bringen das gewünsche Ergebnis (auf den Monitor statt in ein Logfile, kann also gefahrlos getestet werden):
01.
@for /f "delims=" %%a in ('dir /b /ah /ad "%USERPROFILE%\..\*"') do @( 
02.
       if /i "%%a" NEQ "Default User" ( 
03.
		if /i "%%a" NEQ "All Users" ( 
04.
			if /i "%%a" NEQ "Tester" ( 
05.
				if /i "%%a" NEQ "Administrator" echo [1]rd /s /q "%USERPROFILE%\..\%%a"  
06.
07.
08.
09.
10.
 
11.
@for /d %%a in ("%ALLUSERSPROFILE%\..\*") do @( 
12.
       if /i "%%~nxa" NEQ "Default User" ( 
13.
		if /i "%%~nxa" NEQ "All Users" ( 
14.
			if /i "%%~nxa" NEQ "Tester" ( 
15.
				if /i "%%~nxa" NEQ "Administrator" echo [2]rd /s /q "%ALLUSERSPROFILE%\..\%%~nxa"  
16.
17.
18.
19.
20.
 
21.
@for /f "delims=, tokens=1-4" %%i in (""Default User","All Users","Tester","Administrator"") do @( 
22.
   @for /d %%a in ("%ALLUSERSPROFILE%\..\*") do @( 
23.
       if /i "%%~nxa" NEQ %%i ( 
24.
		if /i "%%~nxa" NEQ %%j ( 
25.
			if /i "%%~nxa" NEQ %%k ( 
26.
				if /i "%%~nxa" NEQ %%l echo [3]rd /s /q "%ALLUSERSPROFILE%\..\%%~nxa"  
27.
28.
29.
30.
31.
)
Anmerkungen:
- Variante [1] wäre die einzige, bei der Du das Profil "Default User" überhaupt durch die FOR-Anweisung erwischt.
Denn "Default User" ist ein "verstecktes" Verzeichnis und wird weder beim normalen "Dir /a:d" noch bei einer FOR/D-Anweisung mit ausgegeben.
Erst der Zusatzschalter "DIR ../a:h" zieht auch dieses Verzeichnis/Profil mit an.
- Ich habe bei allen Varianten RELATIV gearbeitet - auf der Parallelebene von %USERPROFILE% oder %ALLUSERSPROFILE%. Ist mir lieber.
- die dritte Variante ist nicht kürzer, aber IMHO wartbarer - ich habe die Ausnahme-Profile im Blick.
- wie geschrieben, die Prüfung auf "..NEQ "Default User" ist bei [2] und [3] Wunschdenken. Dieses Profil siehst Du nicht.
- Zu ergänzen wäre aus meiner Sicht aber noch als 5. Profil das eigene, also "%username%". Das würde ich gern behalten.

Grüße
Biber
Bitte warten ..
Mitglied: Casper2k
02.01.2008 um 08:05 Uhr
ok, ich denke

@for /f "delims=, tokens=1-4" %%i in (""Default User","All Users","Tester","Administrator"") do @(
@for /d %%a in ("%ALLUSERSPROFILE%\..\*") do @(
if /i "%%~nxa" NEQ %%i (
if /i "%%~nxa" NEQ %%j (
if /i "%%~nxa" NEQ %%k (
if /i "%%~nxa" NEQ %%l echo [3]rd /s /q "%ALLUSERSPROFILE%\..\%%~nxa"
)
)
)
)
)

ist das richtige für mich.


Verstehe ich das richtig, dass in der ersten Klammer (da wo auch Tester steht) die Ausnahmen definiert werden?

Was ich allerdings nicht ganz verstehe, was macht die Variable %ALLUSERSPROFILE%\..\%%~nxa ? Müsste doch eigentlich if /i "%%~nxa" NEQ %%l echo [3]rd /s /q "C:\Dokumente und Einstellungen\%%~nxa" heißen, oder?

cu
Casper
Bitte warten ..
Mitglied: Biber
02.01.2008 um 08:33 Uhr
Moin Casper2k,

Verstehe ich das richtig, dass in der ersten Klammer (da wo auch Tester steht) die Ausnahmen definiert werden?
Jepp, exakt. Deshalb ist mir die auch am sympathischsten. Siehe oben, da habe ich geschrieben: "die dritte Variante ist nicht kürzer, aber IMHO wartbarer - ich habe die Ausnahme-Profile im Blick."

Was ich allerdings nicht ganz verstehe, was macht die Variable %ALLUSERSPROFILE%\..\%%~nxa?

Hmmja, das ist vielleicht einfacher am CMD-Prompt nachzuspielen als zu erklären...
[OT]Normalerweise hätte ich jetzt "nachzukaspern" geschrieben, aber in Anbetracht Deines Nicks...**gg [/OT]

Also, lass Dir am CMD mit "set ALLUSERS" mal den Variablenwert von %ALLUSERSPROFILE%" anzeigen.
Vorgeplänkel I:
01.
>set allusers 
02.
ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users
Vorgeplänkel II
In der Laufvariablen %%a stehen nacheinander alle gefundenen Ordnernamen (mit Lw+Pfad+Ordnername), die auch bei einem
01.
>dir /b "%allusersprofile%\..\*"
...gefunden worden wären.
Von diesen Ordnern will ich aber NUR die OrdnerNAMEN ( also %%~na) statt die Ordner-Lw+Ordner-Pfad+Ordnernamen, die ich mit %%a erhalten würde.
Denn diese Ordnernamen will ich ja mit "Administrator"/"Tester" etc. vergleichen können.

Wenn es noch nicht ganz klar ist, dann lass den Batch-Einzeiler mal laufen OHNE die ganzen "@", die die Anzeige unterdrücken. Dann kannst Du die ganzen aufgelösten Variablenwerte sehen.
Müsste doch eigentlich if /i "%%~nxa" NEQ %%l echo [3]rd /s /q "C:\Dokumente und Einstellungen\%%~nxa" heißen, oder?
Hmmm... heißt es auch ...eigentlich.... aber "...%ALLUSERSPROFILE%\..\%%~nxa " ist ein bisschen universeller...

Grüße
Biber
Bitte warten ..
Mitglied: Casper2k
02.01.2008 um 08:42 Uhr

> Was ich allerdings nicht ganz verstehe,
was macht die Variable
%ALLUSERSPROFILE%\..\%%~nxa?

Also, lass Dir am CMD mit "set
ALLUSERS" mal den Variablenwert von
%ALLUSERSPROFILE%" anzeigen.
Vorgeplänkel I:
01.
>set allusers 
02.
> ALLUSERSPROFILE=C:\Dokumente und 
03.
> Einstellungen\All Users 
04.
> 
Vorgeplänkel II
In der Laufvariablen %%a stehen nacheinander
alle gefundenen Ordnernamen (mit
Lw+Pfad+Ordnername), die auch bei einem
01.
>dir /b 
02.
> "%allusersprofile%\..\*" 
03.
> 
...gefunden worden wären.
Von diesen Ordnern will ich aber NUR die
OrdnerNAMEN ( also %%~na) statt die
Ordner-Lw+Ordner-Pfad+Ordnernamen, die ich
mit %%a erhalten würde.
Denn diese Ordnernamen will ich ja mit
"Admistrator"/"Tester"
etc. vergleichen können.


Ah ich dachte dass da im Ordner ALL Users dann nach den
restlichen Profil-Ordnern gesucht wird... Vor allem weil du ja auch
noch \..\ zwischen %ALLUSERSPROFILE% setzt...
Teste das Ganze gerade noch mit mehreren Usern...
Bitte warten ..
Mitglied: Casper2k
02.01.2008 um 08:49 Uhr
Alles klar, passt alles!

DANKEEEEE
Bitte warten ..
Ähnliche Inhalte
Peripheriegeräte
Was macht Ihr gegen Fliegenkot?
gelöst Frage von keine-ahnungPeripheriegeräte29 Kommentare

Moin miteinander, vorweg: das ist eine ernst gemeinte Frage! Und nein, ich habe heute noch nix geraucht, obwohl der ...

Viren und Trojaner
Avira macht Prüfung nicht
Frage von MWTUJEViren und Trojaner2 Kommentare

Hallo Leute, seit Mitte Februar soll jeder PC bei uns in der Firma um 18 Uhr eine vollständige Systemprüfung ...

Windows Server
Windows Server Firewall - Wie macht ihr das?
Frage von twistersWindows Server14 Kommentare

Hallo zusammen bis jetzt haben wir die Windows Firewall der internen Server nicht verwendet. Wurden also beim Aufsetzen deaktiviert. ...

Windows Server
Macht ein Server bei uns Sinn?
Frage von SouthtownWindows Server12 Kommentare

Hallo, wir sind ein kleines Unternehmen. Haben 1 "Server", 5 Clients (Windows) und 8 Mitarbeiter. Sind zum teil Teilzeitstellen, ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 12 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 19 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 20 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 1 TagMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1018 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...