Показать полную графическую версию : [решено] Удаление всех файлов из папки
megaloman,
Первый код ставит на удаление:
Содержимое папки C:\Users\User\Desktop\TheBatPortable\Data\Mail\ХХХ@MAIL.RU\IMAP
т.е. не ту папку (IMAP).
А второй код обрабатывает только одну папку:
Содержимое папки C:\Users\User\Desktop\TheBatPortable\Data\Mail\ХХХ@MAIL.RU\Outbox
т.е. только Outbox (без Sent, Trash) и другие ящики не обрабатывает (например 555@MAIL.RU и т.д.) находящиеся в C:\Users\User\Desktop\TheBatPortable\Data\Mail\
((
megaloman
14-06-2022, 11:10
Первый код ставит на удаление:
Содержимое папки C:\Users\User\Desktop\TheBatPortable\Data\Mail\ХХХ@MAIL.RU\IMAP
т.е. не ту папку (IMAP). » Этого не может быть, там жестко прописаны 3 подпапки в папках xxx@mail.ru
Подозреваю, у Вас имеются скрытые папки и/или файлы. Попробуйте вариант:
Если надо чистить только три подпапки: Outbox, Sent, Trash@Echo Off
cls
>nul chcp 1251
If Not "%~1"=="" Call :MyDel "%~1" "*.*" &Exit /B 0
Set "BoxIn=C:\Users\User\Desktop\TheBatPortable\Data\Mail"
For /f "usebackq delims=" %%d In (`2^>nul Dir "%BoxIn%\*@mail.ru" /B /S /A:D`) Do (
Call :MyDel "%%d\Outbox\" "*.*" ||Exit /B 0
Call :MyDel "%%d\Sent\" "*.*" ||Exit /B 0
Call :MyDel "%%d\Trash\" "*.*" ||Exit /B 0
)
Exit /B 0
:MyDel
cls
If Not Exist "%~1%~2" (Echo ??? Files "%~1%~2" not Found &Pause &Exit /B 0)
Dir /W /A:-D "%~1%~2"
Echo. &Echo Эти файлы будут удалены "%~1%~2" &Echo.
Choice /N /C YNX /M "N -Не удалять файлы; Y -Удалить файлы; X -Завершение работы >"
If %ErrorLevel% EQU 3 Exit /B 2
If %ErrorLevel% EQU 2 Exit /B 0
Del /Q /A:R /A:-D "%~1%~2"
Exit /B 0
Если все подпапки папок ХХХ@MAIL.RU@Echo Off
cls
>nul chcp 1251
If Not "%~1"=="" Call :MyDel "%~1" "*.*" &Exit /B 0
Set "BoxIn=C:\Users\User\Desktop\TheBatPortable\Data\Mail"
For /f "usebackq delims=" %%d In (`2^>nul Dir "%BoxIn%\*@mail.ru" /B /S /A:D`) Do (
For /f "usebackq delims=" %%s In (`2^>nul Dir "%%d" /B /A:D`) Do (
Call :MyDel "%%d\%%s\" "*.*" ||Exit /B 0
)
)
Exit /B 0
Если будут проблемы, проделайте в командном окне команду>C:\dir.txt 2>&1 dir /A:D /S /B "C:\Users\User\Desktop\TheBatPortable\Data\Mail", файл C:\dir.txt приложите к сообщению
megaloman
14-06-2022, 15:19
4zz, Мы с Вами разговаривали о папках ххх@mail.ru, а реально их больше с разными почтовыми ящиками. Вот слегка изменённые (не принципиально, только для удобства настройки масок файлов и папок)@Echo Off
cls
>nul chcp 1251
Set "Fmask=*.*"
Set "Dmask=*@*.*"
If Not "%~1"=="" Call :MyDel "%~1" "%Fmask%" &Exit /B 0
Set "BoxIn=C:\Users\User\Desktop\Новая папка\Data\Mail"
For /f "usebackq delims=" %%d In (`2^>nul Dir "%BoxIn%\%Dmask%" /B /S /A:D`) Do (
Call :MyDel "%%d\Outbox\" "%Fmask%" ||Exit /B 0
Call :MyDel "%%d\Sent\" "%Fmask%" ||Exit /B 0
Call :MyDel "%%d\Trash\" "%Fmask%" ||Exit /B 0
)
Exit /B 0
:MyDel
cls
If Not Exist "%~1%~2" (Echo ??? Files "%~1%~2" not Found &Pause &Exit /B 0)
Dir /W /A:-D "%~1%~2"
Echo. &Echo Эти файлы будут удалены "%~1%~2" &Echo.
Choice /N /C YNX /M "N -Не удалять файлы; Y -Удалить файлы; X -Завершение работы >"
If %ErrorLevel% EQU 3 Exit /B 2
If %ErrorLevel% EQU 2 Exit /B 0
Del /Q /A:R /A:-D "%~1%~2"
Exit /B 0
@Echo Off
cls
>nul chcp 1251
Set "Fmask=*.*"
Set "Dmask=*@*.*"
If Not "%~1"=="" Call :MyDel "%~1" "%Fmask%" &Exit /B 0
Set "BoxIn=C:\Users\User\Desktop\Новая папка\Data\Mail"
For /f "usebackq delims=" %%d In (`2^>nul Dir "%BoxIn%\%Dmask%" /B /S /A:D`) Do (
For /f "usebackq delims=" %%s In (`2^>nul Dir "%%d" /B /A:D`) Do (
Call :MyDel "%%d\%%s\" "%Fmask%" ||Exit /B 0
)
)
Exit /B 0
:MyDel
cls
If Not Exist "%~1%~2" (Echo ??? Files "%~1%~2" not Found &Pause &Exit /B 0)
Dir /W /A:-D "%~1%~2"
Echo. &Echo Эти файлы будут удалены "%~1%~2" &Echo.
Choice /N /C YNX /M "N -Не удалять файлы; Y -Удалить файлы; X -Завершение работы >"
If %ErrorLevel% EQU 3 Exit /B 2
If %ErrorLevel% EQU 2 Exit /B 0
Del /Q /A:R /A:-D "%~1%~2"
Exit /B 0
Прилагаю батники (переименуйте их из .txt), чтобы не было разночтений, в какой кодировке они написаны.
Прилагаю распечатки работы этих батников.
На всякий случай, архив с Вашей структурой папок и файлами, которые я туда напихал для отладки.
Кстати, один скриншот в Вашем архиве у меня не разархивировался - пишет, что подпорчен.
всем привет
писал для себя скрипт для чистки iconcache и thumbcache под win 7-10
@echo off
:: Очистить кэш иконок
cd /d "%userprofile%\AppData\Local"
del /f /q /a:-d IconCache*
del /f /q IconCache*
cd /d "%userprofile%\AppData\Local\Microsoft\Windows\Explorer"
del /f /q /a:-d IconCache*
del /f /q /a:-d thumbcache*
del /f /q IconCache*
del /f /q thumbcache*
timeout /t 1
ie4uinit.exe -show
ie4uinit.exe -hide
timeout /t 1
cd /d "%userprofile%\AppData\Local\Microsoft\Internet Explorer"
del /f/q/a *.log
del /f/q/a *.txt
exit
и
@echo off
:: Очистить кэш иконок
cd /d "%userprofile%\AppData\Local"
del /f /q /a:-d IconCache*
del /f /q IconCache*
cd /d "%userprofile%\AppData\Local\Microsoft\Windows\Explorer"
del /f /q /a:-d IconCache*
del /f /q /a:-d thumbcache*
del /f /q IconCache*
del /f /q thumbcache*
timeout /t 1
ie4uinit.exe -cleariconcache
exit
у меня вопрос, парился с ключами, тк где-то файлы просто скрытые, где-то системные и хотелось, чтобы удаление было со всеми возможными атрибутами.
ключ a:-d нашел в какой-то теме на форуме, но потом встретил, что можно просто /f /q /a
так вот как более правильно или гарантированнее удалятся файлы со всеми возможными атрибутами?
ключ a:-d нашел в какой-то теме на форуме »
ключ /a существует для указания атрибутов файлов, но такого атрибута у файлов нет
атрибуты R Файлы, доступные только для чтения.
S Системные файлы.
H Скрытые файлы.
A Файлы, готовые для архивирования.
I Файлы с неиндексированным содержимым.
L Точки повторной обработки.
O Автономные файлы
- Префикс "-" имеет значение НЕ.
megaloman
06-11-2023, 18:02
Wu-Tang, хотелось, чтобы удаление было со всеми возможными атрибутами. » Del Z:\Delete.kuku\*.kuku /A /F
YuS_2, Вы будете смеяться, но я применял ключ /A:-D в предыдущих постах всего лишь год тому назад (инерция мышления, наверное, этот ключ из Dir) и Del работал как задумано! :)
Для создания файлов для тестирования можно исполнить батник@Echo Off &cls
2>nul Md Delete.kuku
cd.>Delete.kuku\h.kuku
Attrib Delete.kuku\h.kuku +H
cd.>Delete.kuku\s.kuku
Attrib Delete.kuku\s.kuku +S
cd.>Delete.kuku\a.kuku
Attrib Delete.kuku\a.kuku +A
cd.>Delete.kuku\r.kuku
Attrib Delete.kuku\r.kuku +R
cd.>Delete.kuku\sh.kuku
Attrib Delete.kuku\sh.kuku +S +H
Attrib Delete.kuku\*.kuku
Pause
Exit /B
Вы будете смеяться, но я применял ключ /A:-D в предыдущих постах всего лишь год тому назад (инерция мышления, наверное, этот ключ из Dir) и Del работал как задумано! »
Да тут ничего смешного нет... вполне возможно, что не задокументировали ключик, т.к. команда должна была быть применима только к файлам. Да и даже если он был унаследован, по каким-то причинам из DIR, то для DEL, он просто не имеет смысла, ведь каталоги не удаляет DEL...
Заморачиваться над исправлением в микрософте просто не стали, т.к. новая оболочка уже в действии, а cmd просто заморозили, хоть и не вырезали пока.
YuS_2,
да я знаю, что такого ключа в справке нет, но самое интересное, что работает для всех файлов с любыми атрибутами.
megaloman,
вроде пашет на тестовых.
а как мне тогда переписать свои скрипты, так:
@echo off
:: Очистить кэш иконок
cd /d "%userprofile%\AppData\Local"
del IconCache* /A /F
cd /d "%userprofile%\AppData\Local\Microsoft\Windows\Explorer"
del IconCache* /A /F
del thumbcache* /A /F
timeout /t 1
ie4uinit.exe -show
ie4uinit.exe -hide
timeout /t 1
cd /d "%userprofile%\AppData\Local\Microsoft\Internet Explorer"
del /f/q/a *.log
del /f/q/a *.txt
exit
@echo off
:: Очистить кэш иконок
cd /d "%userprofile%\AppData\Local"
del IconCache* /A /F
cd /d "%userprofile%\AppData\Local\Microsoft\Windows\Explorer"
del IconCache* /A /F
del thumbcache* /A /F
timeout /t 1
ie4uinit.exe -cleariconcache
exit
megaloman
07-11-2023, 13:08
Wu-Tang, Насчет ie4uinit.exe не в курсе, но удаление надежнее сделать без CD (не тестировал)@Echo Off &cls
Rem Очистить кэш иконок
Del "%LOCALAPPDATA%\IconCache*" /A /F
Del "%LOCALAPPDATA%\Microsoft\Windows\Explorer\IconCache*" /A /F
Del "%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache*" /A /F
Exit /B
megaloman,
ie4uinit это переинициализация иконок в системе.
поэтому мне нужно включить весь перечень команд, что в моем батнике были.
а что такое &cls и exit с ключом /b?
тогда так?
@echo off &cls
:: Очистить кэш иконок
Del "%LOCALAPPDATA%\IconCache*" /A /F
Del "%LOCALAPPDATA%\Microsoft\Windows\Explorer\IconCache*" /A /F
Del "%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache*" /A /F
timeout /t 1
ie4uinit.exe -show
ie4uinit.exe -hide
timeout /t 1
del "%LOCALAPPDATA%\Microsoft\Internet Explorer\*.log" /A /F
del "%LOCALAPPDATA%\Microsoft\Internet Explorer\*.txt" /A /F
exit /b
и
@echo off &cls
:: Очистить кэш иконок
Del "%LOCALAPPDATA%\IconCache*" /A /F
Del "%LOCALAPPDATA%\Microsoft\Windows\Explorer\IconCache*" /A /F
Del "%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache*" /A /F
timeout /t 1
ie4uinit.exe -cleariconcache
exit /b
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.