Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удаление всех файлов из папки (http://forum.oszone.net/showthread.php?t=131538)

7human7 09-02-2009 11:41 1033425

Цитата:

Цитата 7human7
cmd-шник на удаление всех файлов с опр. папки? »

что по этому вопросу?

Vadikan 09-02-2009 13:53 1033520

Цитата:

Цитата 7human7
что по этому вопросу? »

Код:

del /f /q %systemroot%\temp\*.*
Удаление ненужных файлов и папок после установки ОС

7human7 10-02-2009 13:40 1034466

Цитата:

Цитата Vadikan
*.* »

не удаляет.
мб по-другому как-то? (опять-таки только файлы, которые находятся в этой папке, саму папку не обязательно)

Vadikan 10-02-2009 14:12 1034468

Цитата:

Цитата 7human7
не удаляет.
мб по-другому как-то? (опять-таки только файлы, которые находятся в этой папке, саму папку не обязательно) »

Все должно удаляться. Опубликуйте команду, которую вы использовали, а также приведите сообщения, которые выводятся в окне - ошибки и т.д. Можете убрать параметр /q, тогда будет виден запрос.

dronsky 03-05-2009 09:19 1109504

у меня тоже не удаляются:
Код:

X:\STUFF>del /s C:\Documents and Settings\Администратор\Application Data\Microso
ft\Internet Explorer\Quick Launch\*.*
Системе не удается найти указанный путь.


Petya V4sechkin 03-05-2009 09:21 1109505

dronsky, если в пути есть пробелы, нужны кавычки.

Smarty 03-05-2009 20:53 1109885

Vadikan,
Цитата:

Цитата Vadikan
Код:
del /f /q %systemroot%\temp\*.* »

Задача как раз удалить содержимое из папки "C:\WINDOWS\TEMP", что у меня соответствует "%systemroot%\temp".
Ситуация такая: SFX-архив распаковывается в эту папку и запускает CMD-файл. После завершения работы CMD-файла папку C:\WINDOWS\TEMP надо очистить (файлы и папка с подпапками). Файлы удаляются, а папка - нет!
Пробовал <RD /S /Q "%systemroot%\temp\"> - не работает. Мож подскажете в чем дело? Спасибо.

Всё, разобрался!

dronsky 03-05-2009 21:59 1109935

Petya V4sechkin,
Спасибо конечно, но это ничего не изменило:
Код:

X:\STUFF>del "C:\Documents and Settings\Администратор\Application Data\Microsoft
\Internet Explorer\Quick Launch\*.ink"
Не удается найти C:\Documents and Settings\Администратор\Application Data\Micros
oft\Internet Explorer\Quick Launch\*.ink

Притом, в той папке файлы *.ink имеются на 100%

Вот код батника, ну это для того, чтоб было понятно, что
русских букв в пути не используется
Код:

del "%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch\*.ink"
Ага, прошу прощения, мой косяк - забыл что у ярлыков расширение .lnk (не .ink)

Iska 03-05-2009 22:56 1109982

Может быть, всё-таки не «*.ink», а «*.lnk»?!

korsar77 08-09-2009 09:42 1213871

Petya V4sechkin, Не чистится содержимое папок .Подскажите где ошибка
Код:

cmdow @ /HID
del /f /q "%UsersProfile%\Мои Документы\Мои Рисунки\"
del /f /q "%AllUsersProfile%\Общие документы\Рисунки\"
EXIT


Petya V4sechkin 08-09-2009 09:48 1213877

korsar77, потому что этих папок не существует.

korsar77 08-09-2009 09:51 1213882

Petya V4sechkin, Поясните.Мне нужно удалить содержимоепапок Моя музыка,Мои рисунки

Iska 08-09-2009 11:13 1213925

korsar77, у Вас ошибки. Petya V4sechkin ведь вполне ясно об этом сказал.

Цитируя Ваш код:
Код:

echo [%UsersProfile%]
вместо реального «%UserProfile%». Копировали текст с «%AllUsersProfile%»?!

Далее, не всё то, что видится в Проводнике, отражает реальную ситуацию на диске. В частности, папка общих документов по умолчанию отображается на каталог «C:\Documents and Settings\All Users\Документы», а не на «…\Общие документы», как у Вас.

По хорошему же, надо смотреть в значения «HKEY_LOCAL_MACHINE…/HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders», извлекать и танцевать оттуда. Примеры извлечения значений из реестра и присвоения их переменным на форуме были не раз.

sov44 05-09-2010 13:28 1488902

Похоже вопрос так и остался не решеным. Нужно удалить содержимое папки Temp, которое включает как папки с подпапками, так и отдельные файлы. Саму папку Temp удалять не надо. Как решить задачку?

megaloman 05-09-2010 16:00 1488959

Вот несколько парадоксальное решение:
Код:

Set Where=C:\Tmp

rd "%Where%" /s /q
md "%Where%"

У меня Win XP. Как это работает: удаляются все файлы в папке и подпапках, если они ничем не заняты. Удаляются все подпапки, если они пустые (т е если в них не осталось занятых чем-нибудь файлов), удаляется и указанная папка. Если удалится исходная указанная папка, мы её пересоздадим. Если при пересоздании папки выдастся ошибка (если папка не удалилась), на неё можно не обращать внимания, ничем она не мешает.

Как вариант, можно, конечно, удалить все файлы в указанной папке, можно организовать цикл по именам подпапок в корне указанной папки и последовательно их удалить. Но это длинее.
Код:

Set Where=C:\Tmp
del "%Where%\*.*" /Q
FOR /F "usebackq delims=" %%i IN (`dir "%Where%\" /B /AD`) DO rd "%Where%\%%i" /s /q


Iska 05-09-2010 17:22 1489004

Было же уже: rd + md теряют выставленные разрешения на папку. Правильный путь смотреть в: #3, #4.

sov44 05-09-2010 20:49 1489149

Iska, батник действительно работает. Не могли бы вы разъяснить принцип его работы и чем он хуже варианта megaloman, который тоже рабочий?
Код:

PUSHD %WinDir%\TEMP
2>Nul RD /S/Q "%WinDir%\TEMP"
POPD


megaloman 06-09-2010 10:22 1489440

Iska,
Цитата:

rd + md теряют выставленные разрешения на папку
sov44,
Цитата:

Нужно удалить содержимое папки Temp
-в общем случае это так, однако, не думаю, что на папку TEMP кем-то выставляются какие-то особые для текущего пользователя разрешения, поэтому этот мой способ в частном случае можно успешно использовать. Тем более, что при работе системы чаще всего в папке TEMP имеются занятые файлы (например, антивирусной программой) и удалить её не удастся.
Мой второй вариант применим вообще без ограничений.

megaloman 06-09-2010 13:03 1489551

sov44, pushd "%Where%" приведёт к тому, что указанная папка будет занята системой, и командой RD удалить её не удастся. Как аналог этого действия,
Код:

Set Where=C:\Tmp

%Where:~0,2%
cd "%Where%"

rd "%Where%" /s /q

В этом примере последовательность команд
C:
cd "C:\tmp"
приведёт к тому, что директория C:\Tmp будет занята и командой RD удалена не будет, хотя её содержимое будет вычищено.
Вариант с Pushd мне нравится больше как более универсальный

Iska 06-09-2010 17:31 1489741

Цитата:

Цитата megaloman
…этот мой способ в частном случае можно успешно использовать. »

Для данного частного случая — согласен. За исключением того, что простое «del /q» удаляет не все файлы (по разным атрибутам) ;).

Способ «pushd»/«popd» хорош ещё тем, что нормально работает с UNC-путями без ручного монтирования или плясок с реестром.

P.S. А зачем резать «%Where:~0,2%»?! Можно сразу «cd /d "%Where%"»

megaloman 06-09-2010 19:00 1489781

Iska,
Цитата:

А зачем резать «%Where:~0,2%»?! Можно сразу «cd /d "%Where%"»
Вы правы, я не знал ключ /D, когда-то его не было
Цитата:

«del /q» удаляет не все файлы
- Вы совершенно правы, но, мне кажется, del /? и применение /A никто не отменял. Дело в принципе - как решить. Хотя и говорят, что бес кроется в мелочах. Pushd :yahoo: - очевидно хорошо!

Iska 06-09-2010 19:44 1489804

Цитата:

Цитата megaloman
…мне кажется, del /? и применение /A никто не отменял. »

Уже полный оффтопик у меня пошёл, но всё ж напишу, коль пока хоть каким-то боком относится к теме.
У меня не получалось одной командой «del /a …» удалить файлы как без атрибутов, так и с атрибутами. Какие будут идеи?!

megaloman 07-09-2010 18:19 1490429

Iska, del *.* /A:R /A /Q - вроде бы работает

Iska 07-09-2010 20:55 1490506

Угу. То бишь, можно дублировать параметр «/a». Спасибо, ясно.

sov44 20-12-2010 17:07 1570551

Подскажите, как отредактировать батник по очистке временных файлов Мазилы, т.к. при каждой установке создаётся разная папка, в которой храниться кэш.
Код:


rem ®зЁбвЄ* ўаҐ¬Ґ**ле д*©«®ў Mozilla Firefox
set MF_temp=%USERPROFILE%\Local Settings\Application Data\Mozilla\Firefox\Profiles\eqjrbu3f.default\Cache\
PUSHD %MF_temp%
2>Nul RD /S/Q "%MF_temp%" 
POPD


Iska 20-12-2010 17:43 1570571

Пути к профилям текущего пользователя хранятся в «%APPDATA%\Mozilla\Firefox\profiles.ini»:
Код:


[Profile0]
Name=default
Path=Profiles/soju79jg.default

Работа с профилями

sov44 20-12-2010 19:12 1570619

Iska, Нужно очистить содержимое папки Cache. Что-то типа
Код:

.....Profiles\*.default\Cache\
или чтобы батник сам определял профиль текущего пользования и подставлял его в строчку.

Iska 20-12-2010 20:16 1570653

Цитата:

Цитата sov44
или чтобы батник сам определял профиль текущего пользования и подставлял его в строчку. »

«Это уже второй вопрос, господин профессор…» …и к данной теме отношения не имеющий. Так что, задавать его лучше в отдельной теме.

Если профиль один, и есть уверенность, что «%APPDATA%\Mozilla\Firefox\profiles.ini» не содержит кириллицы (UTF-8), то что-то наподобие:
Код:

for /f "usebackq tokens=2 delims==" %%i in (`type "%APPDATA%\Mozilla\Firefox\profiles.ini"^|find.exe "Path="`) do ^
set MF_temp=%USERPROFILE%\Local Settings\Application Data\Mozilla\Firefox\%%i\Cache\
set MF_temp

После проверки вместо «set MF_temp» внесите Ваш код.

Иначе же, лучше воспользоваться либо какой-либо внешней утилитой, либо каким-либо скриптовым языком.

sov44 20-12-2010 21:56 1570709

Iska, код всё определил и прописал. Подскажите, как развернуть слеш после Profiles в другую сторону.
HTML код:

set MF_temp=%USERPROFILE%\Local Settings\Application Data\Mozilla\Firefox\Profiles/eqjrbu3f.default\Cache\

Iska 20-12-2010 22:26 1570729

А нужно? В NT-системах в пакетных файлах обязано работать и с таким типом слэшей (вроде как поддержка подсистемы POSIX).

P.S. Про кавычки не забываем.

sov44 20-12-2010 22:34 1570733

Скрипт хоть и написал, что ошибка синтаксиса, но отработал как надо.
Код:

for /f "usebackq tokens=2 delims==" %%i in (`type "%APPDATA%\Mozilla\Firefox\profiles.ini"^|find.exe "Path="`) do ^ 
set MF_temp=%USERPROFILE%\Local Settings\Application Data\Mozilla\Firefox\%%i\Cache\ 
PUSHD %MF_temp%
2>Nul RD /S/Q "%MF_temp%"
POPD


Iska 20-12-2010 22:59 1570750

sov44:
1) кавычки;
2) лишние пробелы в конце строк.

sov44 21-12-2010 09:22 1570963

Цитата:

Цитата Iska
1) кавычки; »

Iska, с пробелами всё понятно, убрал. А насчёт кавычек не понял, где лишние. :dont-know

Iska 21-12-2010 10:24 1571004

sov44, напротив — где не хватает.

sov44 21-12-2010 10:48 1571022

Цитата:

Цитата Iska
sov44, напротив — где не хватает. »

надеюсь на практическую помощь ;)

Iska 21-12-2010 11:12 1571039

Здесь:
Цитата:

Код:

PUSHD "%MF_temp%"


4zz 13-06-2022 19:28 2986579

Уважаемые знатоки! Помогите поправить код:
Код:

CHCP 1251
@echo off
set "sdir=%CD%\Data\Mail\ХХХХХХХХ\Outbox\"& if not "%~1"=="" set "sdir=%~1"
set "ext=*.*"
 
echo Файлы ниже будут удалены:
dir /b/s "%sdir%\*.%ext%"

echo Удалить файлы? [Y,N]& set /p z=
if /i "%z%"=="Y" del "%sdir%\*.%ext%"

pause

ХХХХХХХХ это разные почтовые ящики в папке Mail - что нужно прописать вместо ХХХХХХХХ чтобы были обработаны все ящики? - например:
%CD%\Data\Mail\555@mail.ru\Outbox\
%CD%\Data\Mail\444@mail.ru\Outbox\
и т.д.

megaloman 13-06-2022 20:54 2986582

Вариант 1. Пропишите несколько строк с папками:
Код:

@Echo Off
cls
>nul chcp 1251
        If Not "%~1"=="" Call :MyDel "%~1" "*.*" &Exit /B 0
        Call :MyDel "%~dp0Data\Mail\444@mail.ru\Outbox\" "*.*" ||Exit /B 0
        Call :MyDel "%~dp0Data\Mail\555@mail.ru\Outbox\" "*.*" ||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 "%~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 "%~1%~2"
Exit /B 0

Вариант 2. Скрипт обработает все папки ....Data\Mail\*@mail.ru\Outbox\
Код:

@Echo Off
cls
>nul chcp 1251
        If Not "%~1"=="" Call :MyDel "%~1" "*.*" &Exit /B 0
        For /f "usebackq delims=" %%d In (`2^>nul Dir "%~dp0Data\Mail\*@mail.ru" /B /S /A:D`) Do (
                Call :MyDel "%%d\Outbox\" "*.*" ||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 "%~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 "%~1%~2"
Exit /B 0


4zz 13-06-2022 23:41 2986590

Цитата:

Цитата megaloman
Вариант 2. Скрипт обработает все папки ....Data\Mail\*@mail.ru\Outbox\ »

Спасибо, здорово!)
но,...
Первый вариант не рассматривал, т.к. хотелось автоматизации.. - не писать вручную каждый ящик..

Суть идеи - чтобы очистить во всех почтовых ящиках (а сколько их я не знаю) расположенных в папке Mail, мусорные папки Outbox, Sent, Trash (последние хотел дописать по аналогии).
Но не сработало((
Пишет только про один ящик, остальные остались не обработаны((

megaloman 13-06-2022 23:59 2986591

Код:

@Echo Off
cls
>nul chcp 1251
        If Not "%~1"=="" Call :MyDel "%~1" "*.*" &Exit /B 0
        For /f "usebackq delims=" %%d In (`2^>nul Dir "%~dp0Data\Mail\*@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

Либо так
Код:

@Echo Off
cls
>nul chcp 1251
        If Not "%~1"=="" Call :MyDel "%~1" "*.*" &Exit /B 0
        For /f "usebackq delims=" %%d In (`2^>nul Dir "%~dp0Data\Mail\*@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

Процедуру возьмите из предыдущего кода

4zz 14-06-2022 00:38 2986593

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 2986617

Цитата:

Цитата 4zz
Первый код ставит на удаление:
Содержимое папки 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 2986626

Вложений: 5
4zz, Мы с Вами разговаривали о папках ххх@mail.ru, а реально их больше с разными почтовыми ящиками. Вот слегка изменённые (не принципиально, только для удобства настройки масок файлов и папок)
Жестко прописаны подпапки в папках с сcылкой на почту (с символом @)
Код:

@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

В папках с сcылкой на почту (с символом @) обрабатываются все подпапки
Код:

@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), чтобы не было разночтений, в какой кодировке они написаны.
Прилагаю распечатки работы этих батников.
На всякий случай, архив с Вашей структурой папок и файлами, которые я туда напихал для отладки.
Кстати, один скриншот в Вашем архиве у меня не разархивировался - пишет, что подпорчен.

4zz 14-06-2022 15:55 2986628

megaloman, СПАСИБО!)

Wu-Tang 06-11-2023 09:44 3019591

всем привет
писал для себя скрипт для чистки 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
так вот как более правильно или гарантированнее удалятся файлы со всеми возможными атрибутами?

YuS_2 06-11-2023 17:13 3019611

Цитата:

Цитата Wu-Tang
ключ a:-d нашел в какой-то теме на форуме »

ключ /a существует для указания атрибутов файлов, но такого атрибута у файлов нет
Код:

атрибуты      R  Файлы, доступные только для чтения.
                S  Системные файлы.
                H  Скрытые файлы.
                A  Файлы, готовые для архивирования.
                I  Файлы с неиндексированным содержимым.
                L  Точки повторной обработки.
                O  Автономные файлы
                -  Префикс "-" имеет значение НЕ.


megaloman 06-11-2023 18:02 3019613

Wu-Tang,
Цитата:

Цитата 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


YuS_2 06-11-2023 19:56 3019622

Цитата:

Цитата megaloman
Вы будете смеяться, но я применял ключ /A:-D в предыдущих постах всего лишь год тому назад (инерция мышления, наверное, этот ключ из Dir) и Del работал как задумано! »

Да тут ничего смешного нет... вполне возможно, что не задокументировали ключик, т.к. команда должна была быть применима только к файлам. Да и даже если он был унаследован, по каким-то причинам из DIR, то для DEL, он просто не имеет смысла, ведь каталоги не удаляет DEL...
Заморачиваться над исправлением в микрософте просто не стали, т.к. новая оболочка уже в действии, а cmd просто заморозили, хоть и не вырезали пока.

Wu-Tang 07-11-2023 05:31 3019640

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 3019657

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


Wu-Tang 07-11-2023 21:39 3019700

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



Время: 15:34.

Время: 15:34.
© OSzone.net 2001-