senseless-creature
Goto Top

VBS soll CMD mit Adminrecht starten

Hallo Leute, ich möchte per VBS ein CMD mit Adminrechten starten und so den Inhalt von %temp% löschen. Mein Script macht dies auch, allerdings werden die Ordner in %temp% nicht gelöscht und das CMD-Fenster soll sich nach dem löschen wieder schließen - normalerweise würde ich hier ein , True setzen, damit an dieser Stelle die nächsten Zeilen meines VBS abgearbeitet werden, dann werden die Dateien allerdings nicht mehr gelöscht. Wo ist mein Fehler?

Hier mal mein Code:
Set objShell = CreateObject("Shell.Application")  
objShell.ShellExecute "cmd.exe", "/k del /F /S /Q %temp%", "", "runas", 1  
LG

Content-Key: 576723

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

Printed on: May 7, 2024 at 18:05 o'clock

Member: beidermachtvongreyscull
beidermachtvongreyscull Jun 05, 2020 at 02:16:47 (UTC)
Goto Top
Member: Senseless-Creature
Senseless-Creature Jun 05, 2020 at 04:10:01 (UTC)
Goto Top
Danke für deine Antwort, aber das hilft nicht weiter. Das VBS läuft bereits als „elevated“ und das CMD auch.
Mitglied: 144260
Solution 144260 Jun 05, 2020 updated at 07:56:07 (UTC)
Goto Top
allerdings werden die Ordner in %temp% nicht gelöscht
Was erwartest du von del, das löscht nun mal nur Dateien und keine Ordner face-smile. Außerdem kannst du eben keine Ordner löschen in denen noch offene Dateihandles vorhanden sind, dafür müsste man erst die Handles abschießen.
und das CMD-Fenster soll sich nach dem löschen wieder schließen
Warum verwendest du dann /k als Parameter und nicht /c ?? face-smile Einfach mal cmd /? eintippeln hätte dafür gereicht ...
/C      Führt den Befehl in der Zeichenfolge aus und endet dann.
/K      Führt den Befehl in der Zeichenfolge aus und endet dann nicht.

CreateObject("Shell.Application").ShellExecute "cmd.exe", "/c rd ""%TEMP%"" /s /q &md ""%TEMP%"" >nul 2>&1", "", "runas", 1  
Member: beidermachtvongreyscull
beidermachtvongreyscull Jun 05, 2020 at 06:56:58 (UTC)
Goto Top
Wann möchtest Du denn die %temp%-Struktur löschen?
Es besteht nämlich bis zum Abmelden einer Sitzung gerne das Problem, dass Prozesse noch den Zugriff auf Dateien sperren.
Member: emeriks
emeriks Jun 05, 2020 at 08:31:06 (UTC)
Goto Top
Ich werfe mal Löschen von Ordnern mittels Robocopy in den Raum.

  1. man erstelle einen neuen, leeren Temp-Ordner
  2. man spiegele diesen neuen, leeren Temp-Ordner auf den zu löschenden Ziel-Ordner mittels Robocopy
  3. man löscht die Temp-Ordner und Ziel-Ordner

z.B.
set %tempdir%=C:\leer
set %destdir%=C:\ZuLoeschen
md "%tempdir%"  
robocopy "%tempdir%" "%destdir%" /MIR /B /R:0 /W:0 /NP /MT   
rd /s /q "%tempdir%"  
rd /s /q "%destdir%"  
Member: Senseless-Creature
Senseless-Creature Jun 05, 2020 updated at 09:57:52 (UTC)
Goto Top
Manchmal sieht man den Wald vor lauter Bäumen nicht - Ich hatte es jetzt erst mit „& Exit“ und „, True“ gelöst, aber mit deinem Tip konnte ich das ganze jetzt folgendermaßen lösen.

WshShell.Run "cmd.exe /c del /F /S /Q %temp%", 1, True   

Vielen Dank für deinen Hinweis zu /k und /c - kannte ich zwar aus der Powershell aber manchmal ist man „betriebsblind“ face-smile
LG