CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
-
Fafus
CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Господа, прошу помощи, есть каталог с подкаталогами, в которых файлы jpg с именами *.jpg и *_1.jpg. Нужен скрипт, который удалит только файлы с названием типа *.jpg . И перед удалением вывел предупреждение, в каком каталоге и сколько файлов удалится y\n, если это возможно
-
Iska
Re: CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Fafus, вот это:
Цитата Fafus:
с именами *.jpg и *_1.jpg.
к чему было? Вы понимаете, что первая маска покрывает вторую целиком и полностью?
Цитата Fafus:
И перед удалением вывел предупреждение, в каком каталоге и сколько файлов удалится y\n, если это возможно
Возможно, но нудно. И зачем?
Код:
Цитата Fafus:
с именами *.jpg и *_1.jpg.
CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
к чему было? Вы понимаете, что первая маска покрывает вторую целиком и полностью?
Цитата Fafus:
И перед удалением вывел предупреждение, в каком каталоге и сколько файлов удалится y\n, если это возможно
CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Возможно, но нудно. И зачем?
Код:
Код: Выделить всё
del /f /p /s /a "Путь к каталогу\*.jpg"-
Fafus
Re: CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
off
[spoiler]Для "тотала", такое действит. не нужно, от слова сафсем. Гислер старался-тужился и в итоге заплакал...[/spoiler]
[spoiler]Для "тотала", такое действит. не нужно, от слова сафсем. Гислер старался-тужился и в итоге заплакал...[/spoiler]
-
glukin
Re: CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Iska, Я так понимаю - нужно:
Если (filename(последние 4 символа в имени файла)==.jpg)&&(filename(последние 6 символов в имени файла)!=_1.jpg) То
Файл удалить
Автор, уточните, если не так.
Если (filename(последние 4 символа в имени файла)==.jpg)&&(filename(последние 6 символов в имени файла)!=_1.jpg) То
Файл удалить
Автор, уточните, если не так.
-
glukin
Re: CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Да, извините, ошибся в первом посте. В общем есть файлы [filename]_1.jpg и [filename].jpg
Нужно оставить только [filename]_1.jpg, остальные удалить.
Конкретный пример: IMG_0018.jpg - удалить, IMG_0018_1.jpg - оставить
По поводу сообщения перед удалением, можно ли сделать хотя бы так, чтобы перед удалением был запрос y/n или что-то вроде этого. Скрипт будет кнопкой в totalcmd, и таким образом хочу обезопаситься от случайного сноса нужных jpg'ов если находясь в другой папке (которую чистить не планирую) запущу скрипт.
Нужно оставить только [filename]_1.jpg, остальные удалить.
Конкретный пример: IMG_0018.jpg - удалить, IMG_0018_1.jpg - оставить
По поводу сообщения перед удалением, можно ли сделать хотя бы так, чтобы перед удалением был запрос y/n или что-то вроде этого. Скрипт будет кнопкой в totalcmd, и таким образом хочу обезопаситься от случайного сноса нужных jpg'ов если находясь в другой папке (которую чистить не планирую) запущу скрипт.
-
megaloman
Re: CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Если удалить все файлы *.jpg кроме *_1.jpg
[spoiler]Код: [/spoiler]
Если удалить все файлы filename.jpg, а filename_1.jpg оставить
[spoiler]Код: [/spoiler]
На каждое удаление выдаётся запрос. Имя папки с файлами надо указать, у меня это Set "BoxIn=Z:\Temp"
[spoiler]Код: [/spoiler]
Код: Выделить всё
@Echo Off
cls
Set "BoxIn=Z:\Temp"
Set "Mask=.jpg"
Set "MaskEx=_1.jpg"
Set "Exclude=~EXCLUDE.tmp"
Echo %MaskEx%>"%EXCLUDE%"
FOR /F "usebackq delims=" %%f IN (`XCOPY "%BoxIn%\*%Mask%" /L /S /EXCLUDE:%Exclude% 2^>nul`) DO (
If /I "%%~xf"=="%Mask%" Del /P "%%f"
)
Del "%EXCLUDE%"
pause
GoTo :EofЕсли удалить все файлы filename.jpg, а filename_1.jpg оставить
[spoiler]Код: [/spoiler]
Код: Выделить всё
@Echo Off
cls
Set "BoxIn=Z:\Temp"
Set "Mask=.jpg"
Set "MaskEx=_1.jpg"
Set "Exclude=~EXCLUDE.tmp"
Echo %MaskEx%>"%EXCLUDE%"
FOR /F "usebackq delims=" %%f IN (`XCOPY "%BoxIn%\*%Mask%" /L /S /EXCLUDE:%Exclude% 2^>nul`) DO (
If /I "%%~xf"=="%Mask%" If Exist "%%~dpnf%MaskEx%" Del /P "%%f"
)
Del "%EXCLUDE%"
pause
GoTo :EofНа каждое удаление выдаётся запрос. Имя папки с файлами надо указать, у меня это Set "BoxIn=Z:\Temp"
-
megaloman
Re: CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Цитата Fafus:
Скрипт будет кнопкой в totalcmd, и таким образом хочу обезопаситься от случайного сноса нужных jpg'ов если находясь в другой папке (которую чистить не планирую) запущу скрипт.
Надо приучаться подобные вещи делать банально «ручками». Что в Far Manager, что в Total Commander задаёте маску поиска с исключением:
Код:
ищете, результаты выводите на панель, убеждаетесь, что найдено именно то, что нужно, и ничего лишнего, затем выделяете и удаляете.
Это будет на порядок быстрее, нежели на каждый подобный чих лепить отдельный пакетный файл или скрипт.
Скрипт будет кнопкой в totalcmd, и таким образом хочу обезопаситься от случайного сноса нужных jpg'ов если находясь в другой папке (которую чистить не планирую) запущу скрипт.
CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Надо приучаться подобные вещи делать банально «ручками». Что в Far Manager, что в Total Commander задаёте маску поиска с исключением:
Код:
Код: Выделить всё
*.jpg|*_1.jpgищете, результаты выводите на панель, убеждаетесь, что найдено именно то, что нужно, и ничего лишнего, затем выделяете и удаляете.
Это будет на порядок быстрее, нежели на каждый подобный чих лепить отдельный пакетный файл или скрипт.
-
Iska
Re: CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Fafus, Забыл спросить: конкретная пара filename.jpg и filename_1.jpg находятся в одной папке? Мои решения работают в этом предположении. Если в разных папках, то возможная реализация будет работать намного медленнее.
-
megaloman
Re: CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Цитата Iska:
нежели на каждый подобный чих лепить отдельный пакетный файл или скрипт.
целиком согласен
Fafus
Еще вариант:
Код:
Сохранить в кодировке 866!
нежели на каждый подобный чих лепить отдельный пакетный файл или скрипт.
CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
целиком согласен
Fafus
Еще вариант:
Код:
Код: Выделить всё
@echo off
set "d=papka"
set "r=jpg"
echo Следующие файлы будут удалены:& echo:
for /f "delims=" %%a in ('2^>nul dir /a-d/b "%d%\*.%r%"^|findstr /rvc:"^[^_][^_]*_[0-9][0-9]*\.%r%$"') do set /a m+=1& echo %%a& set "$_%%a=%%a"
echo Всего файлов будет удалено: %m% штук& echo:& set /p "v=Сделайте выбор (удалять=y,не удалять=n): "& echo:
if %v%==y (echo Удаляем:& for /f "tokens=2 delims==" %%a in ('set $_') do echo del "%d%\%%a")&: Убрать echo перед del, если все устраивает
if %v%==n echo Операция отложена& echo:
pauseСохранить в кодировке 866!
-
alpap
Re: CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
Всем спасибо, скрипты забрал 
