Mam kilka nazw plików, które są oznaczone znacznikiem czasu (aż do nanosekund) i chcę zachować tylko jeden plik na sekundę. Oto na przykład niektóre nazwy plików:
11-14-29-033.jpg
(co oznacza, że plik został nagrany o godzinie 11, 14, 29, 29 i 33 nanosekundie).
11-14-29-602.jpg
11-14-29-839.jpg
11-14-29-953.jpg
11-14-30-406.jpg
11-14-30-847.jpg
11-14-31-091.jpg
11-14-31-419.jpg
11-14-31-667.jpg
11-14-32-364.jpg
11-14-32-619.jpg
11-14-32-913.jpg
11-14-33-150.jpg
11-14-33-485.jpg
11-14-33-708.jpg
11-14-34-052.jpg
11-14-34-336.jpg
11-14-35-174.jpg
11-14-36-563.jpg
11-14-36-788.jpg
11-14-37-278.jpg
11-14-37-584.jpg
11-14-38-050.jpg
11-14-38-841.jpg
11-14-39-196.jpg
11-14-39-736.jpg
11-14-39-870.jpg
11-14-40-091.jpg
11-14-40-766.jpg
11-14-41-052.jpg
11-14-41-676.jpg
Czy istnieje sposób, w jaki mogę napisać plik wsadowy (w systemie Windows), aby usunąć wszystkie pliki oprócz 1 na sekundę?
for
, użyj posortowanego wyjściadir
. W pętli zapisz pierwsze 8 liter nazwy pliku. Gdy pojawi się ponownie => usuń, w przeciwnym razie => zapisz nowy prefiks.Odpowiedzi:
To powinno wykonać zadanie:
Ta
FOR /R
pętla będzie zmienić nazwę każdego.jpg
pliku do odHH-MM-SS-MMM
doHH-MM-SS
po prostu usuwając ostatnie 4 znaki, chyba że nazwa pliku już istnieje.REN
Komenda nie będzie zmienić nazwę pliku i następnie będzie się usuwać później.źródło
SETLOCAL EnableDelayedExpansion
w skrypcie?