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

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

Ответить
Настройки темы
CMD/BAT - Очистка содержимого дисков не затрагивая папки ОС

Новый участник


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

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


Нужен батник по очистке всех папок и файлов кроме системных, на всех дисках. Поиском пользовался.
Были решения со списком исключений, но почему-то не работают. Может есть у кого готовый батник?

Отправлено: 13:06, 13-06-2013

 

Ветеран


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

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


Что Вы понимаете под «системными папками и файлами»?

Отправлено: 13:23, 13-06-2013 | #2



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

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


Новый участник


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

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


Цитата Iska:
Что Вы понимаете под «системными папками и файлами»? »
Windows Users Program Files и (x86)

Отправлено: 13:39, 13-06-2013 | #3


Ветеран


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

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


То есть:
Код: Выделить весь код
$Recycle.Bin
"Documents and Settings"
ProgramData
Recovery
"System Volume Information"
и файлы в корневом разделе удаляем (ну, ладно — пытаемся удалить )? А после идём в раздел Microsoft Windows 7 и жалуемся?

Цель Ваша глобальная какова?

Отправлено: 15:53, 13-06-2013 | #4


Новый участник


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

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


Цитата Iska:
Цель Ваша глобальная какова? »
Цель - при открытии двери офиса ненужными людьми быстро подчистить диски. оставить систему с программной составляющей.

Отправлено: 02:48, 14-06-2013 | #5


Ветеран


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

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


Rudeboy, если под «ненужными людьми» подразумеваются люди из управления «К» — то сие не поможет. Разве что Программа SDelete (версия 1.6.1) и ей подобные. Но для их работы нужно время.

Отправлено: 04:34, 14-06-2013 | #6


Ветеран


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

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


Цитата Rudeboy:
Цель - при открытии двери офиса ненужными людьми быстро подчистить диски »

Для этого вся работа должна храниться на сетевом диске, а специально обученные помощники админа изымать винчестеры по секундомеру.

Отправлено: 07:09, 14-06-2013 | #7


Новый участник


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

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


Я с похожим вопросом обращался. У меня кстати исключения работают, но толкьо если папки в корне диска.

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

PHP код: Выделить весь код

@echo on

Set Otkuda
=c:


Set NoDelete=C:cleanexclude.txt
@Echo %>%NoDelete%

@Echo 
555 >>%NoDelete%


FOR /
"usebackq delims=" %%f IN (`xcopy /y /h /i "%Otkuda%\*.aaa" Y:\Clean\%USERNAME% /L /S /EXCLUDE:%NoDelete%`) DO Del "%%f"
pause 


В Eclude.txt написано

\555\

Тоесть, из сканирования исключена папка 555 и всё вложенные папки. опять таки это я для примера.


Есть только несколько проблем.
1. Файлы почему-то не копируются. (только удаляются, а надо что бы копировались с сохранением структуры папок)
2. Не знаю как сделать такой поиск по всем локальным дискам (исключая флэшки если они вставлены)
3. Как перечислить побольше масок файлов? *.aaa стоит для примера. А надо *.aaa, *.bbb, *.ссс и т.дт

Последний раз редактировалось Xarien, 14-06-2013 в 17:28.


Отправлено: 17:05, 14-06-2013 | #8


Ветеран


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

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


Xarien:
Цитата:
а надо что бы копировались с сохранением структуры папок
у xcopy ключи /e или /s в зависимости от задачи

Цитата:
Не знаю как сделать такой поиск по всем локальным дискам (исключая флэшки если они вставлены)
Код: Выделить весь код
@echo off
setlocal

set "wmic=wmic logicaldisk where drivetype!="2" get name"

for /f %%i in (' "%wmic%" ') do if exist %%i echo do something with drive %%i
Цитата:
Как перечислить побольше масок файлов? *.aaa стоит для примера. А надо *.aaa, *.bbb, *.ссс и т.дт
Можно завернуть в еще один цикл:
Код: Выделить весь код
for %%i in (.aaa .bbb .ccc) do (

    for /f ... %%j in ('xcopy .... *%%i ....) do del "%%j"

)

Последний раз редактировалось Foreigner, 14-06-2013 в 18:15.

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

Отправлено: 18:04, 14-06-2013 | #9


Новый участник


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

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


Всё равно не копирует. Удалять удаляет, с исключениями, как надо, но не копируует перед этим. В итоге папка Y:\Clean\%USERNAME% пуста.



PHP код: Выделить весь код

@echo on

MD Y
:Clean%USERNAME%
If 
Not Exist "Y:\Clean" (
Echo 
Otsutstvet Setevoi DiskY:Clean
Exit


setlocal

set wmic
=wmic logicaldisk where drivetype="3" get name

Set NoDelete
=C:cleanexclude.txt
@Echo %>%NoDelete%

@Echo 
OFFICE >>%NoDelete%
@Echo 
Windows >>%NoDelete%
@Echo 
Program Files >>%NoDelete%
@Echo 
Program Files (x86) >>%NoDelete%

for /
%%i in (' "%wmic%" ') do if exist %%(

for %%
j in (.aaa .bbb .ccc) do (
FOR /
"usebackq delims=" %%f IN (`xcopy /s /y /h /i "%%i\*%%j" "Y:\Clean\%USERNAME%" /L /EXCLUDE:%NoDelete%`) DO Del "%%f"
)



Пытался вставить отдельно строку c xcopy (Но не понятно почему не работает вышеуказанный код...)

PHP код: Выделить весь код

for /%%i in (' "%wmic%" ') do if exist %%(

for %%
j in (.aaa .bbb .ccc) do FOR /"usebackq delims=" %%f IN (`xcopy /s /y /h /i "%%i\*%%j" "Y:\Clean\%USERNAME%\%%i"`) do (

FOR /
"usebackq delims=" %%f IN (`xcopy /s /y /h /i "%%i\*%%j" "Y:\Clean\%USERNAME%" /L /EXCLUDE:%NoDelete%`) DO Del "%%f"
)
)
pause 


Но это ооочень уж длительный процесс.


Такая процедура значительно быстрее отрабатывала поиск и копирование файлов. (но по правде говоря я совсем не понимаю, почему она намного быстрее всё это делает.)

PHP код: Выделить весь код

for /%%a in (%SystemDrive%*) do (set "$a=%%a"
 
SetLocal EnableDelayedExpansion
if /i not "!$a:~3!"=="Program Files (x86)" if /i not "!$a:~3!"=="Windows"  (
  
pushd "!$a!\" && (for /f "delims=" %%A in ('"dir/b/s/a-*.aaa *.bbb *.ccc 2>Nul"') do (
  xcopy /s /y /h /i "
%%A" "Y:Clean%USERNAME%%%~pA">Nul && del /f /s /q "%%A"

)
  popd)) 

И я бы использовал этот код для копирования, но не получается указать в нём поиск на всех локальных дисках, определяемых выше, как в коде ниже. (при этом не затрагивая флэшки и сетевые диски)


PHP код: Выделить весь код

set wmic=wmic logicaldisk where drivetype="3" get name

for /%%i in (' "%wmic%" ') do if exist %%(
for /
%%a in (%%i) do (set "$a=%%a"
 
SetLocal EnableDelayedExpansion
if /i not "!$a:~3!"=="Program Files (x86)" if /i not "!$a:~3!"=="Windows"  (
  
pushd "!$a!\" && (for /f "delims=" %%A in ('"dir/b/s/a-*.aaa *.bbb *.ccc 2>Nul"') do (
  xcopy /s /y /h /i "
%%A" "Y:Clean%USERNAME%%%~pA">Nul && del /f /s /q "%%A"

)
  popd)) 


Я уже совсем запутался.

Последний раз редактировалось Xarien, 18-06-2013 в 12:57.


Отправлено: 12:31, 18-06-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - [решено] Ищу программу запрещающую удаление и перемещение папки, но не её содержимого. Houre Microsoft Windows 2000/XP 16 28-02-2011 02:26
Разное - [решено] винда не видит содержимого дисков в приводе bazon Microsoft Windows 2000/XP 9 22-11-2010 10:56
Очистка папки. zubkoff.s Microsoft Windows NT/2000/2003 4 10-11-2009 05:31
Ограничить размер содержимого папки clin Microsoft Windows NT/2000/2003 6 12-12-2008 13:55
Разное - При просмотре содержимого копакт дисков все иконки DimonR Microsoft Windows 2000/XP 5 23-05-2008 10:49




 
Переход