![Как удалить имена файлов с похожими частичным именем?](https://rvso.com/image/1552785/%D0%9A%D0%B0%D0%BA%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D0%B8%D0%BC%D0%B5%D0%BD%D0%B0%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%20%D1%81%20%D0%BF%D0%BE%D1%85%D0%BE%D0%B6%D0%B8%D0%BC%D0%B8%20%D1%87%D0%B0%D1%81%D1%82%D0%B8%D1%87%D0%BD%D1%8B%D0%BC%20%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BC%3F.png)
У меня есть куча имен файлов, которые имеют временные метки (вплоть до наносекунд), и я хочу сохранить только один файл в секунду. Например, вот некоторые имена файлов:
11-14-29-033.jpg
(что означает, что файл был записан в 11 часов 14 минут 29 секунд и 33 наносекунды).
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
Есть ли способ написать пакетный файл (в Windows) для удаления всех файлов, кроме одного, в секунду?
решение1
Это должно сработать:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET "source=C:\adjust\path"
FOR /R "%source%" %%F IN ("??-??-??-???.jpg") DO (
SET "file_name=%%~nF"
SET "file_name=!file_name:~0,-4!"
REN "%%F" "!file_name!%%~xF" >nul 2>&1
)
FOR /R "%source%" %%G IN ("??-??-??-???.jpg") DO (
DEL "%%G"
)
ECHO Done^^!
PAUSE
Этот FOR /R
цикл переименует каждый .jpg
файл в с по, HH-MM-SS-MMM
просто HH-MM-SS
удалив последние 4 символа, если только имя файла уже не существует. REN
В этом случае команда не переименует файл, и он будет удален впоследствии.