Показать полную графическую версию : [решено] Удаление всех файлов из папки
megaloman
06-09-2010, 19:00
Iska, А зачем резать «%Where:~0,2%»?! Можно сразу «cd /d "%Where%"» Вы правы, я не знал ключ /D, когда-то его не было «del /q» удаляет не все файлы - Вы совершенно правы, но, мне кажется, del /? и применение /A никто не отменял. Дело в принципе - как решить. Хотя и говорят, что бес кроется в мелочах. Pushd :yahoo: - очевидно хорошо!
…мне кажется, del /? и применение /A никто не отменял. »
Уже полный оффтопик у меня пошёл, но всё ж напишу, коль пока хоть каким-то боком относится к теме.
У меня не получалось одной командой «del /a …» удалить файлы как без атрибутов, так и с атрибутами. Какие будут идеи?!
megaloman
07-09-2010, 18:19
Iska, del *.* /A:R /A /Q - вроде бы работает
Угу. То бишь, можно дублировать параметр «/a». Спасибо, ясно.
Подскажите, как отредактировать батник по очистке временных файлов Мазилы, т.к. при каждой установке создаётся разная папка, в которой храниться кэш.
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
Пути к профилям текущего пользователя хранятся в «%APPDATA%\Mozilla\Firefox\profiles.ini»:
…
[Profile0]
Name=default
Path=Profiles/soju79jg.default
…
Работа с профилями (http://mozilla-russia.org/products/firefox/faq/index.html#AEN10)
Iska, Нужно очистить содержимое папки Cache. Что-то типа
.....Profiles\*.default\Cache\
или чтобы батник сам определял профиль текущего пользования и подставлял его в строчку.
или чтобы батник сам определял профиль текущего пользования и подставлял его в строчку. »
«Это уже второй вопрос, господин профессор…» …и к данной теме отношения не имеющий. Так что, задавать его лучше в отдельной теме.
Если профиль один, и есть уверенность, что «%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» внесите Ваш код.
Иначе же, лучше воспользоваться либо какой-либо внешней утилитой, либо каким-либо скриптовым языком.
Iska, код всё определил и прописал. Подскажите, как развернуть слеш после Profiles в другую сторону.
set MF_temp=%USERPROFILE%\Local Settings\Application Data\Mozilla\Firefox\Profiles/eqjrbu3f.default\Cache\
А нужно? В NT-системах в пакетных файлах обязано работать и с таким типом слэшей (вроде как поддержка подсистемы POSIX).
P.S. Про кавычки не забываем.
Скрипт хоть и написал, что ошибка синтаксиса, но отработал как надо.
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
sov44:
1) кавычки;
2) лишние пробелы в конце строк.
1) кавычки; »
Iska, с пробелами всё понятно, убрал. А насчёт кавычек не понял, где лишние. :dont-know
sov44, напротив — где не хватает.
sov44, напротив — где не хватает. »
надеюсь на практическую помощь ;)
Уважаемые знатоки! Помогите поправить код:
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
Вариант 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
Вариант 2. Скрипт обработает все папки ....Data\Mail\*@mail.ru\Outbox\ »
Спасибо, здорово!)
но,...
Первый вариант не рассматривал, т.к. хотелось автоматизации.. - не писать вручную каждый ящик..
Суть идеи - чтобы очистить во всех почтовых ящиках (а сколько их я не знаю) расположенных в папке Mail, мусорные папки Outbox, Sent, Trash (последние хотел дописать по аналогии).
Но не сработало((
Пишет только про один ящик, остальные остались не обработаны((
https://www.upload.ee/thumb/14227969/2022-06-13_233704.png (https://www.upload.ee/image/14227969/2022-06-13_233704.png)
megaloman
13-06-2022, 23:59
@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
Процедуру возьмите из предыдущего кода
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.