hofct
Goto Top

Batch soll Verzeichnis aus dem Startmenü jedes lokalen Benutzers löschen

Das Ausführen einer Batchdatei soll ein namentlich bekanntes Verzeichnis im Startmenü jedes lokalen Benutzers löschen, wobei die einzelnen lokalen Benutzer(-Profile) namentlich nicht bekannt sind.

Hallo zusammen

ich möchte mit einem Benutzer der über ausreichende Berechtigungen verfügt mittels einer Batchdatei aus dem Startmenü jedes Benutzerprofiles einen Ordner 'Testordner' entfernen.

Kann mir dabei jemand weiterhelfen?
Vielen Dank

Content-Key: 39611

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

Ausgedruckt am: 28.03.2024 um 11:03 Uhr

Mitglied: Biber
Biber 07.09.2006 um 16:19:11 Uhr
Goto Top
Moin hofct,

und die Benutzerprofile sind für Dich alle erreichbar auf einem Serverlaufwerk, das für Dich Laufwerk "M:" heißt und liegen unterhalb des Ordners "m:\users"?

Oder soll das Löschen im Logonskript, also durch den jeweiligen User geschehen?

Gruß
Biber
Mitglied: hofct
hofct 07.09.2006 um 16:30:05 Uhr
Goto Top
Hallo Biber

Danke für deine Bemühung, -nein, es ist viel einfacher, es handelt sich um die lokalen Profile auf einem Client-PC. Und ich möchte den Batch auf dem Client PC ausführen.
Ich möchte nichst mit einem Logonskript machen, sondern der Batch soll in den einzelnen Benutzerprofilen ins Startmenü wechseln und dort den Testordner löschen.

Danke und Gruss, Christian
Mitglied: Biber
Biber 07.09.2006 um 17:11:01 Uhr
Goto Top
Ah, hofct,
Du meinst so etwas wie dieses:
::--- snipp HauWechAlleTestordner.bat
@for /f "delims=" %%i in ('dir /aD /b /s "%Userprofile%\..\*Startm*"') do @if exist "%%i\TestOrdner @ECHO rd /q /s "%%i"  

[das @echo nur zu Testzwecken; zum Scharf-Machen löschen]

Oder, wenn Dein TestOrdner einen eindeutigen Namen hat, dann einfacher:
::--- snipp HauWechAlleTestordner.bat
@for /f "delims=" %%i in ('dir /aD /b /s "%Userprofile%\..\TestOrdner"') do @ECHO rd /q /s "%%i"  

Gruß
Biber
der seine Schnipsel selten testet ... auch diesmal nicht
Mitglied: hofct
hofct 07.09.2006 um 19:22:41 Uhr
Goto Top
Hallo Biber

leider funktioniert das nicht. Beim folgenden Batchinhalt

@for /f "delims=" %%i in ('dir /aD /b /s "%USERPROFILE%\Startmenü\Testordner"') do rd /q /s "%%i"
pause

erhalte ich immer die Meldung dass das System die angegebene Datei nicht finden kann...

Gruss, hofct
Mitglied: Biber
Biber 07.09.2006 um 19:41:55 Uhr
Goto Top
Na ja, hofct,

dann machen die Umlaute in "Startmenü" Probleme.
Deshalb hatte ich auch in meinem Schnipsel "Startm*" statt "Startmenü" geschrieben.

Abhilfe:
Für CMD.exe und Windows-GUI die Codepage synchronisieren (CHCP 1252).
Fur die CMD.exe steht sie bei Dir vermutlich auf CHCP 850?

Ohne Abhilfe/Ohne Codepage-Sync
Variante a) Batch-Mimik über "das Unterverzeichnis Testordner, das unter ..\%Username%\Startmenü hängt"
@for /f "delims=" %%i in ('dir /aD /b /s "%Userprofile%\..\Startm*"') do @echo if exist %%~si\Testordner ECHO rd /q /s %%~si\Testordner  
[Ergebnis: rd /q /s C:\DOKUME~1\taskuser\STARTM~1\Testordner]

Variante b) Batch-Mimik über die Suche nach dem Ordnernamen "TestOrdner", der unterhalb der %userProfile% eindeutig ist
@for /f "delims=" %%i in ('dir /aD /b /s "%Userprofile%\..\Testordner"') do @echo rd /q /s %%~si  
[Ergebnis: rd /q /s C:\DOKUME~1\taskuser\STARTM~1\TESTOR~1]

Hope That Fits
Biber
Mitglied: hofct
hofct 07.09.2006 um 20:05:54 Uhr
Goto Top
hallo Biber

das funktioniert super, danke vielmals:
@for /f "delims=" %%i in ('dir /aD /b /s "%Userprofile%\..\Startm*"') do rd /q /s %%~si\Testordner

was mir nicht klar ist sind die beiden . . im Ausdruck "%Userprofile%\..\Startm*" ?
sowie der Parameter ~s im Ausdruck %%~si ?

kannst du mir sagen was es damit auf sich hat?

Gruss, hofct
Mitglied: Biber
Biber 07.09.2006 um 21:10:03 Uhr
Goto Top
Hmmm,
kann ich nur versuchen... bin kein guter Erklärer.

Wenn Du mal parallel mit testest am CMD-Prompt:

Es gibt immer die Variable %userProfile%, die ungefähr so aussieht:
>set userprofile
USERPROFILE=C:\Dokumente und Einstellungen\Biber

Die zeigt auf das "Benutzer-Root" des angemeldeten Benutzers.
Alle anderen Benutzerverzeichnisse sind dazu parallel (also ein Verzeichnis hoch und dann wieder runter.

"Ein Verzeichnis hoch" von %userprofile% aus gesehen ist (in meinem Fall): "C:\Dokumente und Einstellungen", wenn ich eingebe:
(=20:48:11  D:\temp=)
>dir  "%userprofile%\..\"  
 Datenträger in Laufwerk C: ist BiberSeiner
 Volumeseriennummer: 0815-4711

 Verzeichnis von C:\Dokumente und Einstellungen
......
>dir  "%userprofile%\..\..\"  
...
Verzeichnis von C:\
...
Der 2. Fall, ein Dir "%userProfile%\..\..\" geht zwei Verzeichnisse hoch.
Der DIR-Befehl oben im Oneliner:
.....'dir /aD /b /s "%Userprofile%\..\Startm*"'  
.. sucht EINE Ebene oberhalb des eigenen Userverzeichnisses alle Verzeichnisse darunter, die mit "Startm*" anfangen.
So, jetzt der "%~si"-Teil der Frage...

Wieder Kurztest am CMD-Prompt:
>for /f "delims=" %i in ('dir /aD /b /s "%Userprofile%\..\Startm*"') do @echo  %i  
 C:\Dokumente und Einstellungen\All Users\Startmenü
 C:\Dokumente und Einstellungen\Default User\Startmenü
 C:\Dokumente und Einstellungen\Biber\Startmenü
 C:\Dokumente und Einstellungen\taskuser\Startmenü
Mit der "einfachen" FOR-Variablen %i bekäme ich den Pfad "wie er ist", mit allen Leerzeichen und Umlauten drin.
Mit der ...hm, letzten Endes Formatierungsoption "%~si" bekomme ich den "Short-Filename" in 8.3-Syntax.
>for /f "delims=" %i in ('dir /aD /b /s "%Userprofile%\..\Startm*"') do @echo  %~si  
 C:\DOKUME~1\ALLUSE~1\STARTM~1
 C:\DOKUME~1\DEFAUL~1\STARTM~1
 C:\DOKUME~1\Biber\STARTM~1
 C:\DOKUME~1\taskuser\STARTM~1

Klarer geworden?
Mitglied: hofct
hofct 08.09.2006 um 08:32:06 Uhr
Goto Top
ganz toll! alles klar, ich danke dir vielmals!

Liebe Grüsse,
hofct