ich tun würde, dass Sie wie folgt vor:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "FILEMASK=%~1"
for /F "eol=| delims=" %%F in ('
dir /B /A:-D "%FILEMASK%" ^| findstr /R "\.[0-9][0-9]*$"
') do (
del /P /F "%%~F"
)
endlocal
exit /B
dieses Batch-Programm verwenden zu können, bieten die Dateimaske als Argument. Wenn Sie nicht angeben, wird das aktuelle Verzeichnis aufgelistet.
Der Schalter /P
bei dem Befehl del
wird zu Testzwecken hinzugefügt. Wenn Sie also keine Eingabeaufforderungen anzeigen möchten, entfernen Sie sie einfach. Der Schalter /F
erzwingt das Löschen von schreibgeschützten Dateien. Wenn du das nicht willst, entferne es auch.
Die Dateimaske ich oben im Gespräch bin, ist für den dir
Befehl nur, die die globale Platzhalter *
und ?
nur unterstützt, für eine Folge von Zeichen oder ein einzelnes Zeichen, respectively. Siehe auch diesen Microsoft-Artikel: Using wildcard characters.
Es gibt keine direkte Möglichkeit, eine Maske zu erstellen, die nur Ziffern übereinstimmt, auch nach diesem: Command-prompt wildcards for digits?
deshalb ich bin mit dem findstr
-Befehl, der einen kleinen Satz von regulären Ausdrücken unterstützt, alle Dateien filtern die eine rein numerische Dateierweiterung haben. Weitere Informationen zu diesem nützlichen Befehl finden Sie im Microsoft-Artikel Findstr und auf der Website FINDSTR.
[PowerShell] (https://msdn.microsoft.com/en-us/powershell) ist auf allen Windows 7-Systemen vorinstalliert. Ein PowerShell-Skript ist so viel einfacher zu schreiben als ein Windows-Batch-Skript. Wäre das eine Option? – IInspectable
@Intspectable Das wäre in Ordnung! –