Erledigt Batch-Hilfe gesucht!

Hallo Boardies,

for /f %%t in (dir /b C:\Windows\System32\config\systemprofile\AppData\Local\*.tmp) do (rmdir /s /q C:\Windows\System32\config\systemprofile\AppData\Local\%%t)

Was ist hier falsch? Danke euch wie immer für jeden Tipp und Input.

(Quelle: computerbase)
 

dr_tommi

alter Oldie
Auf den ersten Blick würde ich sagen dass du nach Dateien suchst und dann versuchst das übergeordnete Verzeichnis zu löschen.
Die Syntax passt insgesamt aber nicht ganz, da fehlen hier und da ein paar Zeichen.
Dann müsstest du allerdings auch nicht den Parameter %%t übergeben sondern nur das Verzeichnis von %%t.
Und das müsste %%~dpt sein.
%~dpI - erstellt den Laufwerkbuchstaben und Pfad von %I.
Quelle: for /?

Außerdem wird bei "dir /b" kein Verzeichnis mit ausgegeben, du willst aber Unterverzeichnisse suchen. Also muss da "dir /b/s" stehen.

Zum testen:
Code:
FOR /F "usebackq" %%i IN (`dir /b/s  C:\Windows\System32\config\systemprofile\AppData\Local\*.tmp`) DO @echo %%~dpi
Zum Löschen dann das "echo" gegen dein "rm /s/q" ersetzen.
 
Zuletzt bearbeitet:
1635946310142.png

@dr_tommi
Leider kein Erfolg, unten das Original.
 

dr_tommi

alter Oldie
Anhang anzeigen 19702
@dr_tommi
Leider kein Erfolg, unten das Original.
Außerhalb einer Batchdatei wird nur ein %-Zeichen bei den Variablen benutzt, deshalb diese Fehlermeldung.
Wenn du das also auf der Kommandozeile testen willst, dann nur %i, in der Batchdatei %%i.
Kommandozeile:
Code:
FOR /F "usebackq" %i IN (`dir /b/s  C:\Windows\System32\config\systemprofile\AppData\Local\*.tmp`) DO @echo %~dpi
Als Batchdatei:
Code:
FOR /F "usebackq" %%i IN (`dir /b/s  C:\Windows\System32\config\systemprofile\AppData\Local\*.tmp`) DO @echo %%~dpi

Da müssen wir wohl mal das Batch-Wissen auffrischen. ;:)

Nachtrag:
Ich habe zuerst nur die Batchdatei betrachtet.
ich habe mir mal die Ordnerstruktur in dem gewählten Verzeichnis angesehen.
Da gibt es eine Menge Ordner der Form, alle leer :
Code:
C:\Windows\System32\config\systemprofile\AppData\Local\tw-1284-2fd0-2c88de.tmp\
C:\Windows\System32\config\systemprofile\AppData\Local\tw-1284-2fd0-2c894e.tmp\
C:\Windows\System32\config\systemprofile\AppData\Local\tw-1284-2fd0-2c896f.tmp\
C:\Windows\System32\config\systemprofile\AppData\Local\tw-1284-2fd0-2c8981.tmp\
Und auch Dateien
Code:
C:\Windows\System32\config\systemprofile\AppData\Local\tpm-2a28-295c-ff5c7.tmp

Die Ordner müssen natürlich anders behandelt werden als die Dateien.
Und wenn du das so machst wie du oben versucht hats, dann müsste eigentlich sogar der Ordner C:\Windows\System32\config\systemprofile\AppData\Local\ gelöscht werden, und das ist bestimmt nicht beabsichtigt.

Ich würde das einzeln behandeln.
Für die Ordner zum Test:
Code:
FOR /F "usebackq" %%i IN (`dir /b /s /A:D  C:\Windows\System32\config\systemprofile\AppData\Local\*.tmp`) DO @echo %%i
Zum Löschen:
Code:
FOR /F "usebackq" %%i IN (`dir /b /s /A:D  C:\Windows\System32\config\systemprofile\AppData\Local\*.tmp`) DO @rmdir /S/Q %%i
Und da hier keine Dateien gemeint sind sondern durch den Parameter /A: D nur Verzeichnisse angezeigt werden, benötigen wir auch nicht %%~dpi.
Auch hier gilt wieder:
Innerhalb der Batchdateien %%, außerhalb %.

Und die Dateien kann man direkt löschen:
Code:
del  C:\Windows\System32\config\systemprofile\AppData\Local\*.tmp
 
Zuletzt bearbeitet:

dr_tommi

alter Oldie
Dort werden die Dateien aber auch gelöscht.
Code:
FOR /D /R "%SYSTEMROOT%\System32\config\systemprofile\AppData\Local" %%X IN (*.tmp) DO RD /S /Q "%%X"
Such mit autoruns nach "provtool" in den Tasks (Aufgabenplanung) und schalte die beiden ab.
(in der Aufgabenplanung konnte ich es nicht so schnell finden)
Es ist nur ein Task.
In der Aufgabenplanung findet man den Task unter:
Code:
\Microsoft\Windows\Management\Provisioning\logon
 

Bestatter

Schwarzfahrer
Ich habe im Startup-Skript der Domäne das hier mit ein wenig Prosa drum herum:
Code:
    schtasks /Change /TN "Microsoft\Windows\Management\Provisioning\Logon" /DISABLE
    for /D %%i in ( c:\Windows\System32\config\systemprofile\AppData\Local\tw-*.tmp ) do rmdir %%i
 

Bestatter

Schwarzfahrer
Du meinst sicher "den Server, wenn ich mich da anmelde"! :D

Nö, den Server verwöhne ich persönlich.
Außerdem gibt es da (2019 Standard) gar kein Management\Provisioning\Logon.
 

GiveThatLink

Bekanntes Mitglied
Ich hatte auch diesen tw-Müll drin. Löschen, Task abschalten, bislang nichts mehr. Ich hänge aber auch nicht an einer Domäne. Laut den zwei Links ist es wohl immer noch ein Bug, warum auch immer. Allerdings würde ich auch kein Batch mehr einsetzen, sondern auf PS umsatteln als Bordmittel - es dürften manche Batch-Krämpfe da mit einem Einzeiler machbar sein ;) Ich würde einen Code wohl eher durch den Compiler jagen und einen Task erstellen - sprich, ein universelles Tool mit Parameter füttern, ohne in den Windows-Keller gehen zu müssen, denn DOSen sind out :p Nur solange Microsoft selbst zu blöd dafür ist, diese Zöpfe abzuschneiden, solange gibts auch DOSen.
 

Sammo2k

Bekanntes Mitglied
Ich hab das Problem mit diesen zwei Zeilen in einer administrativen Powershell gelöst:

Get-childItem C:\Windows\System32\config\systemprofile\AppData\Local\tw-*.tmp |Remove-Item
Disable-ScheduledTask -TaskName "\Microsoft\Windows\Management\Provisioning\Logon"

die erste Zeile löscht evtl. vorhandene Ordner, die zweite deaktiviert den Task, der für die Ordner verantwortlich ist.
 
Oben Unten