Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление всех файлов из папки

Ответить
Настройки темы
CMD/BAT - [решено] Удаление всех файлов из папки

Аватара для 7human7

Старожил


Сообщения: 483
Благодарности: 1


Конфигурация

Профиль | Отправить PM | Цитировать


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

Отправлено: 11:41, 09-02-2009

 


Moderator


Сообщения: 53187
Благодарности: 15437

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:48, 08-09-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 570
Благодарности: 236

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:51, 08-09-2009 | #12


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


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», извлекать и танцевать оттуда. Примеры извлечения значений из реестра и присвоения их переменным на форуме были не раз.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:13, 08-09-2009 | #13


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


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

Отправлено: 13:28, 05-09-2010 | #14


Ветеран


Contributor


Сообщения: 2710
Благодарности: 1686

Профиль | Отправить PM | Цитировать


Вот несколько парадоксальное решение:
Код: Выделить весь код
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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 05-09-2010 в 16:35.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:00, 05-09-2010 | #15


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


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

Отправлено: 17:22, 05-09-2010 | #16


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


Iska, батник действительно работает. Не могли бы вы разъяснить принцип его работы и чем он хуже варианта megaloman, который тоже рабочий?
Код: Выделить весь код
PUSHD %WinDir%\TEMP
2>Nul RD /S/Q "%WinDir%\TEMP"
POPD
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:49, 05-09-2010 | #17


Ветеран


Contributor


Сообщения: 2710
Благодарности: 1686

Профиль | Отправить PM | Цитировать


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 06-09-2010 в 10:57.


Отправлено: 10:22, 06-09-2010 | #18


Ветеран


Contributor


Сообщения: 2710
Благодарности: 1686

Профиль | Отправить PM | Цитировать


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 мне нравится больше как более универсальный

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:03, 06-09-2010 | #19


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


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

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

P.S. А зачем резать «%Where:~0,2%»?! Можно сразу «cd /d "%Where%"»
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:31, 06-09-2010 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление всех файлов из папки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление Папки и всех подпапок и файлов sashok60 Скриптовые языки администрирования Windows 16 02-03-2016 08:54
CMD/BAT - [решено] удаление всех файлов и подпапок в нескольких папках alexandri Скриптовые языки администрирования Windows 18 12-01-2010 05:33
CMD/BAT - [решено] Удаление всех папок с одним именем на всех дисках volk1234 Скриптовые языки администрирования Windows 15 13-11-2009 02:13
Удаление всех папок и файлов из папки c:\Temp DIKPro Microsoft Windows NT/2000/2003 10 15-08-2006 16:20
[решено] Удаление всех файлов определенного формата Grub Хочу все знать 4 24-03-2006 12:27




 
Переход