Ich habe einen Ordner mit ungefähr 50 verschiedenen Dateien (NAME1.jpg, NAME2.jpg, NAME3.jpg ...).
Ich habe ein Programm, das ausgeführt wird und jede Datei in etwa 4 verschiedene Dateien aufteilt und sie umbenennt (NAME1-0.jpg, NAME1-1.jpg, NAME2-0.jpg, NAME2-1.jpg...).
Ich möchte eine BAT-Datei erstellen, die ausgeführt wird und alle Dateien löscht, die keine *-0.jpg-Dateien sind.
Das Nächste, was ich bisher erreicht habe, ist die folgende Zeile:
for %i in (*) do if not %i == "*.jpg" del "%i"
Aber dadurch werden einfach alle Dateien im Ordner gelöscht, einschließlich der -0.jpg-Dateien, die ich speichern möchte.
gibt es einen besseren Spruch?
Antwort1
Ich möchte alle Dateien löschen, die nicht *-0.jpg-Dateien sind.
Ich habe ein Programm, das ausgeführt wird und jede Datei in etwa 4 verschiedene Dateien aufteilt und sie umbenennt (NAME1-0.jpg, NAME1-1.jpg, NAME2-0.jpg, NAME2-1.jpg...).
Verwenden Sie die folgende Batchdatei (test.cmd):
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /b NAME?-?.jpg') do (
rem get file name
set _fname=%%~ni
rem get last 2 characters of file name
set _last2=!_fname:~-2!
if [!_last2!] NEQ [-0] del "%%i"
)
Beispiel:
F:\test>dir *.jpg
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
08/12/2015 23:51 0 NAME1-0.jpg
08/12/2015 23:51 0 NAME1-1.jpg
08/12/2015 23:51 0 NAME2-0.jpg
08/12/2015 23:51 0 NAME2-1.jpg
4 File(s) 0 bytes
0 Dir(s) 1,776,919,613,440 bytes free
F:\test>test
F:\test>dir *.jpg
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
08/12/2015 23:51 0 NAME1-0.jpg
08/12/2015 23:51 0 NAME2-0.jpg
2 File(s) 0 bytes
0 Dir(s) 1,776,919,613,440 bytes free
Weitere Informationen
- Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
- dir- Zeigt eine Liste der Dateien und Unterordner an.
- aktivierte verzögerte Erweiterung- Die verzögerte Erweiterung führt dazu, dass Variablen zur Ausführungszeit und nicht zur Analysezeit erweitert werden.
- für /f- Befehl mit den Ergebnissen eines anderen Befehls wiederholen.
- Wenn- Führen Sie einen Befehl bedingt aus.
- Satz- CMD-Umgebungsvariablen anzeigen, festlegen oder entfernen. Mit SET vorgenommene Änderungen bleiben nur für die Dauer der aktuellen CMD-Sitzung bestehen.