Показать полную графическую версию : [решено] При удалении файлов из DOWNLOAD батником эта папка становиться недоступна
При удалении всех файлов/папок из DOWNLOAD батником папка DOWNLOAD становиться недоступна. Почему?
Браузеры начинают по-умолчанию сохранять в Documents\Download.
Батник:
@echo off
rd /s /q "%USERPROFILE%\Downloads"
При удалении всех файлов/папок из DOWNLOAD батником папка DOWNLOAD становиться недоступна. »
Потому, что Вы вместо очистки удаляете сам каталог. Так делать не нужно.
P.S. Вечером поищу готовый код.
Спасибо за указание ошибки.
удаляете сам каталог »
А если дописать "%USERPROFILE%\Downloads\*.*" как-нибудь? Прокатит?
А если дописать "%USERPROFILE%\Downloads\*.*" как-нибудь? Прокатит? »
Нужна другая команда из разряда "del" и прокатит, но в в этом случае удалит только файлы в текущей папке и не удалит ни вложенные каталоги, ни их содержимое.
Iska, Anton04, спасибо, порыскал нашёл конкретное готовое решение:
@echo off
PUSHD %USERPROFILE%\Downloads\
2>Nul RD /S/Q "%USERPROFILE%\Downloads\"
POPD
И второй вариант без удаления конкретно файла
@echo off
setlocal enableextensions enabledelayedexpansion
rem Укажите местонахождение директории для очистки
set sTargetFolder=%USERPROFILE%\Downloads\
rem Поддиректория (или файл), которая НЕ должна удаляться
set sExcludeFilesOrFolders="trash.bat"
for /f "tokens=*" %%i in ('dir "%sTargetFolder%" /b /a:-d') do (
set /a bDelete = 1
for %%j in (%sExcludeFilesOrFolders%) do (
if /i "%%i" equ "%%~j" set /a bDelete = 0
)
if !bDelete! equ 1 del /f /q "%sTargetFolder%\%%i"
)
for /f "tokens=*" %%i in ('dir "%sTargetFolder%" /b /a:d') do (
set /a bDelete = 1
for %%j in (%sExcludeFilesOrFolders%) do (
if /i "%%i" equ "%%~j" set /a bDelete = 0
)
if !bDelete! equ 1 rd /s /q "%sTargetFolder%\%%i"
)
endlocal
exit /b 0
Windows 10 может очищать эту папку автоматически с заданным интервалом без костылей. См. Параметры - (Поиск)- Контроль памяти.
https://t.me/sterkin_ru/670 | https://vk.com/wall-81672804_5972
Vadikan, очень разумное решение.
Это всё здорово, но планировщиков я "ненавижу терпеть".
Не спрашиваем почему, я и сам уже не помню откуда это, но, именно так.
Считать сообщение отступом от темы, в сторону флейма.
Vadikan, ну охренеть :closed-to Спасибо! :up
yurfed, фича не требует планировщика. Он нужен только в том случае, если не устраивают интервалы 1, 14, 30, 60 дней.
Но даже в этом случае батник не нужен, ибо папка в сфере cleanmgr http://www.oszone.net/13312/
См. также Удаление временных файлов скриптом по расписанию http://www.outsidethebox.ms/11968/
nikhop, в общем случае можно использовать подобное (код удалит все файлы, не имеющие атрибутов hydden или system):
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=%UserProfile%\Downloads
2>nul pushd "%sSourceFolder%" && (
for /f "usebackq delims=" %%i in (`2^>nul dir /a:-d-h-s /b "*.*"`) do echo del /f /q "%%~i"
popd
) || (
echo Can't find source folder [%sSourceFolder%].
exit /b 1
)
endlocal
exit /b 0
Для реального удаления убрать echo. Использовать подход с RD (даже в сочетании с pushd "%UserProfile%\Downloads") в данном случае не следует — поскольку так попадёт под раздачу и файл desktop.ini, который отвечает за специконку и отображаемое имя папки в Проводнике.
Но, коль в Windows 10 есть встроенный механизм, описанный выше коллегой Vadikan — лучше пользовать его.
Для реального удаления убрать echo »
хотелось бы скрытно удалять )
хотелось бы скрытно удалять »
Это не батник, а VB-скрипт нужен.
Примерно так (на WSH, не проверялось):
Option Explicit
Dim objFolder
Dim objSubFolder
Dim objFile
Set objFolder = WScript.CreateObject("Shell.Application").NameSpace("shell:Downloads")
If Not objFolder Is Nothing Then
With WScript.CreateObject("Scripting.FileSystemObject").GetFolder(objFolder.self.Path)
For Each objSubFolder In .SubFolders
'WScript.Echo "[" & objSubFolder.Name & "]"
objSubFolder.Delete True
Next
For Each objFile In .Files
If Not StrComp(objFile.Name, "desktop.ini", vbTextCompare) = 0 Then
'WScript.Echo objFile.Name
objFile.Delete True
End If
Next
End With
Set objFolder = Nothing
Else
WScript.Echo "Can't access into user [Downloads] folder."
WScript.Quit 1
End If
WScript.Quit 0
И, тем не менее, повторюсь:
…коль в Windows 10 есть встроенный механизм, описанный выше коллегой Vadikan — лучше пользовать его. »
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.