Was müsste ich hinzufügen, um auch Dateinamen zu ignorieren, die AppData mit der Erweiterung .exe enthalten? Ich verwende dies in einem SetupComplete.cmd für eine unbeaufsichtigte Windows-Installation und habe AppDataLocal.exe und AppDataRoaming.exe, die SFX-Archive sind, und möchte diese nicht löschen. Ich hoffe, dies kann ein Platzhalter sein, so etwas wie AppData*.exe.
forfiles /p "%WINDIR%\Setup\Files" /s /m *.* /c "cmd /c for %G in (@path) do @if /I [%~xG] neq [.reg] @echo del /F /Q %G" /d
Antwort1
Ich sehe keinen Grund, FORFILES zu verwenden – es ist ziemlich langsam.
Ich würde ungefähr Folgendes tun:
@echo off
for /f "delims=" %%F in (
'dir /b /s /a-d "%WINDIR%\Setup\Files"^|findstr /rive "\.reg [\\]AppData[^\\]*\.exe"'
) do del "%%F"
Ich leite ein rekursives DIR /B durch FINDSTR und verwende ein Paar regulärer Ausdrücke, um Dateinamen auszuschließen, die mit „.reg“ oder „\AppData*.exe“ enden, wobei ich die Groß- und Kleinschreibung ignoriere. Das Ergebnis wird über FOR /F iteriert, sodass ich jede Datei löschen kann.