1

Владельцы Nokia Lumia 1020 знают, что его можно настроить для сохранения снятых фотографий в полном разрешении, но фотографии уменьшенного размера также сохраняются. Я хотел бы иметь скрипт для автоматического удаления всех версий с низким разрешением.

Имена файлов являются следующими:

WP_20150303_17_20_38_Pro.jpg
WP_20150303_17_20_38_Pro__highres.jpg
WP_20150303_17_21_21_Pro.jpg
WP_20150303_17_21_21_Pro__highres.jpg
WP_20150303_17_21_32_Pro.jpg
WP_20150303_17_21_32_Pro__highres.jpg
WP_20150303_17_22_47_Pro.jpg
WP_20150303_17_22_47_Pro__highres.jpg
WP_20150303_17_28_14_Pro.jpg
WP_20150303_17_28_14_Pro__highres.jpg

Я мог бы удалить * _pro.jpg, но тогда есть риск, что если вообще не будет версии с высоким разрешением. Как я могу написать скрипт, который сначала проверит наличие файла с высоким разрешением, а затем только удалит версию с низким разрешением?

2 ответа2

0

Создайте командный файл. Начните здесь: Команда цикла: против результатов другой команды и здесь: Аргументы командной строки (параметры)

For /F "tokens=*" %%G in ('dir /b *_pro.jpg') do (
   echo %%~dpnG
)

Теперь вы можете изменить echo %%~dpnG на

   if exist "%%~dpnG__highres.jpg" echo del "%%~dpnxG"

или даже

   if exist "%%~dpnG__highres.jpg" (
        echo del "%%~dpnxG"
   ) else (
        echo retain %%~dpnxG
   )

Тщательно проверьте вывод (лучше дважды) и замените echo del на del .

Добавьте /s переключиться на команду dir следующим образом: dir /b /s *_pro.jpg для обработки файлов в подпапках.

0

Файл .bat, который я использую:

    @Echo off
For /F "tokens=*" %%G in ('dir /s /b *_pro.jpg') do (
    if exist "%%~dpnG__highres.jpg" (
        echo delete %%~dpnxG
   ) else (
        echo retain %%~dpnxG
   )
)

Echo.
Echo _________________________________________________
Echo.

 Echo Do you really want to delete these files (Y/N)?
CHOICE /C YN /N 
IF ERRORLEVEL 2 goto doend
IF ERRORLEVEL 1 goto doerase
exit

:doerase
For /F "tokens=*" %%G in ('dir /s /b *_pro.jpg') do (
    if exist "%%~dpnG__highres.jpg" (
        del "%%~dpnxG"
   ) else (
        REM echo retain %%~dpnxG
   )
)

:doend
pause

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .