[ОТВЕТИТЬ]
19.06.2012 14:17
OlegON
 
Кто-нибудь озадачивался, как это делать? del путь\*.* не подойдет - вывалится по количеству, есть вариант с forfiles, но надо чтобы везде работало...
19.06.2012 16:02
student
 
Цитата:
OlegON Кто-нибудь озадачивался, как это делать? del путь\*.* не подойдет - вывалится по количеству, есть вариант с forfiles, но надо чтобы везде работало...
не озадачивался :) но если в винде\досе штатными средствами - попробовал бы создать каталог, переместить туда все что надо (по идее должно быстро пройти - только ссылки) и грохнуть его (каталог) целиком ...
19.06.2012 18:25
Tema
 
а почему del должен отвалиться? можно сделать del /q путь\*.*
или echo Y|del путь\*.*
создал 100к файлов мелких, удалилось за полминуты, ничего не отваливается. Может конечно в старых версиях доса по-другому, проверял на хр
и раз в вопросе указано *.* то видимо целиком папку грохнуть надо, тогда наверное проще переименовать ее, создать новую, а старую так папкой и удалить.
19.06.2012 19:20
OlegON
 
как факт - отваливается после какого-то предела. как раз про ХР или 2003 речь... Дальше не пробовал.
19.06.2012 21:23
Tema
 
rmdir /s/q foldername пробовал?
вроде пишут что больше миллиона удаляли так, 50+ минут
19.06.2012 21:26
OlegON
 
да, забыл написать... директория активна, в нее идет запись, удаляются не *.*, а файлы по маске, т.е. некорректно я выразился сначала...
20.06.2012 08:08
student
 
Цитата:
OlegON запись, удаляются не *.*, а файлы по маске
:) а я так и предпологал и поэтому

Цитата:
student попробовал бы создать каталог, переместить туда все что надо (по идее должно быстро пройти - только ссылки) и грохнуть его (каталог) целиком ...
20.06.2012 09:18
OlegON
 
мне кажется не очень корректным решение, поскольку неизвестно, где можно создать каталог, а то еще угодишь на недоступное по правам место или вообще на другой диск. да и перемещение приблизительно равно удалению... ведь пофайлово все равно пойдет...
20.06.2012 09:25
student
 
Цитата:
OlegON мне кажется не очень корректным решение, поскольку неизвестно, где можно создать каталог, а то еще угодишь на недоступное по правам место или вообще на другой диск. да и перемещение приблизительно равно удалению... ведь пофайлово все равно пойдет...
не правда твоя - создавать там же где файлики - какой нибудь каталог типа ~~~~temp~~~~ (либо определить сначала тмп каталог и там создавать), перемещение через rename физически не перемещает файлы - меняются только ссылки в таблице файлов - должно быть быстро, а далее - rmdir или rd с ключиками...
20.06.2012 09:35
OlegON
 
А удаление перемещает файлы? ;) Создание каталога может быть запрещено (если каталог без права записи, а файлы - rw), да и не факт, что кто-то не бабахнет в этот каталог что-то полезное, не зная, что ты его чистишь (если что-то случится и каталог останется, например), что касается %TEMP%, то он может быть на другом диске.
20.06.2012 09:46
student
 
Цитата:
OlegON А удаление перемещает файлы? ;) Создание каталога может быть запрещено (если каталог без права записи, а файлы - rw), да и не факт, что кто-то не бабахнет в этот каталог что-то полезное, не зная, что ты его чистишь (если что-то случится и каталог останется, например), что касается %TEMP%, то он может быть на другом диске.
удаление тоже не перемещает, так же пометка ставится :), просто если винда и если есть что то что пихает все в корзинку (на ранних стадиях я подобное встречал у нортоновских утилит) то там будет копирование всех файликов, а в случае каталога только его одного...

а так - да - что пнем по голове, что головой об пень...

ps
посмотри обсуждение

там есть цитата из мс - Предложили переименовать каталог и спокойно удалять из него файлы пока все не удалятся:)

pps
либо заюзай что либо внешнее типа FastCopy


или Quick Delete 1.0
20.06.2012 10:28
OlegON
 
Любишь ты сообщения править :)
Внешнее по задаче исключается, должно работать у всех по штатному. Это не так, чтобы я не мог почистить каталог, это в скрипт надо впихнуть. Каталог переименовать не дадут, внутри открытые файлы и я не уверен, что база не закроется, если обнаружит, что логи аудита писать некуда (а речь про них).
20.06.2012 11:00
student
 
Цитата:
OlegON Любишь ты сообщения править :)
Внешнее по задаче исключается, должно работать у всех по штатному. Это не так, чтобы я не мог почистить каталог, это в скрипт надо впихнуть. Каталог переименовать не дадут, внутри открытые файлы и я не уверен, что база не закроется, если обнаружит, что логи аудита писать некуда (а речь про них).
офф: ага, люблю :) просто не всегда с первого раза удается сформулировать, а раз такая возможность есть то почему бы не поюзать...

а если в скрипт и без внешних утилит - мне кажется оптимальным все таки будет из него стартануть внешний батник - отдельный поток - в нем создать создать катлог, переместить туда (чтобы результат в исходном сразу видно было) и запустить его удаление - пусть удаляется потихоньку - мешать то это уже никому не будет...
20.06.2012 11:05
vdm
 
А чем пофайловое удаление в стандартном for не устраивает?
Медленно?
Или там также, как в del, проблемы на большом количестве файлов?
20.06.2012 11:25
grannie
 
Цитата:
OlegON как факт - отваливается после какого-то предела. как раз про ХР или 2003 речь..
А это точно не что-то внешнее типа антивируса так влияет? Да, бывает долго, но чтоб отваливалось - не видел ни разу.
20.06.2012 12:52
OlegON
 
Если честно, теперь уже не уверен, что видел это на винде, у меня тут и солярка и чпукс. Как факт - файлы на винде не удалялись, теперь ломаю голову, может это просто занятость части файлов сказывалась... Сейчас запущу батничек, поделюсь результатами...
Код:
echo off
set CNT=1500000
mkdir bobo 
for /L %%i in (1,1,%CNT%) do @echo>bobo\%%i.tmp
echo del
time /t 
del bobo\*.tmp 
time /t
for /L %%i in (1,1,%CNT%) do @echo>bobo\%%i.tmp
echo move
time /t 
mkdir bobo\bubu
move bobo\*.tmp bobo\bubu >null
rmdir bobo\bubu /S /Q
time /t
for /L %%i in (1,1,%CNT%) do @echo>bobo\%%i.tmp
echo for
time /t 
for %%i in (bobo\*.tmp) do @del %%i
time /t
rmdir /S /Q bobo
21.06.2012 09:26
OlegON
 
Сраная винда, консоль вылетела при прерывании. Но приблизительные результаты были следующие:
del ~ 11 минут
move ~ 20 минут
for был запущен вчера в момент написания сообщения и вот сейчас я его прибил, поскольку он жрал 100% проца. Судя по тому, как rmdir трудится над тем, что осталось, осталось там еще ооочень много.
03.07.2012 14:33
mat skywalker
 
Есть еще VBS помимо CMD в Винде. Такие скрипты нагрузят проц на 50%:

set FSO=CreateObject("Scripting.FileSystemObject") 'Подключаем FileSystemObject
FSO.DeleteFolder "C:\1" 'Удаляем папку C:\1

set FSO=CreateObject("Scripting.FileSystemObject") 'Подключаем FileSystemObject
FSO.DeleteFile "C:\1.txt" 'Удаляем файл C:\1.txt
Опции темы


Часовой пояс GMT +3, время: 20:45.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.