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

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

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

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


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

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


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

Не удаляет скрытые файлы, хотя /A: RSHAIL ключ H удаления скрытых есть.
И ещё он не удаляет файлы во вложенных папках

Помогите пожалуйста сделать на bat или vbs?
вот мой пример:

Код: Выделить весь код
chcp 1251

@set %%a
@for %%a in ("C:\общая папка кафедры\*.*") do (if /i "%%~xa" neq ".txt" del /F /S /Q /A: RSHAIL "%%a")
pause

Отправлено: 08:22, 12-02-2015

 

Ветеран


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

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


Цитата kot318:
chcp 1251 »
Это лишнее. Необходимо и достаточно сохранить пакетный файл в кодировке OEM/866.

Примерно так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
	`2^>nul dir /b /s /a:-d "E:\Песочница\0433\*.*"`
) do if /i "%%~xi" neq ".txt" echo del /f /q /a "%%~fi"

endlocal
exit /b 0
Для реального удаления уберите выделенное.

Последний раз редактировалось Iska, 12-02-2015 в 10:00. Причина: Добавил забытое «/a».

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

Отправлено: 09:05, 12-02-2015 | #2



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

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


Ветеран


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

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


kot318,
Код: Выделить весь код
@echo off
setlocal
1>nul chcp 1251

set "command=dir /b /s /a-d "C:\общая папка кафедры" | findstr /v ".*\.txt$""
for /f "tokens=*" %%i in (' "%command%" ') do del /a "%%i"
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:13, 12-02-2015 | #3


Ветеран


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

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


Foreigner, да, это ещё быстрее. А я опять забыл в своём коде про «/a» . Добавил.

Отправлено: 10:00, 12-02-2015 | #4


Ветеран


Contributor


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

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


После подсказки Foreigner мой батник принял вид
Код: Выделить весь код
@Echo Off
FOR /F "usebackq delims=" %%f IN (`Dir "E:\ddddDDdddddddddddddddd\*.*" /s /b /A:-D 2^>Nul`) DO Call :DFile "%%f"
GoTo :Eof

:DFile
Set Ext=11111%~x1
If "%Ext:~-4%"==".txt" GoTo :Eof

Del %1 /A /F >nul 2>nul
У Iska, Foreigner как-то элегантнее :-(

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


Последний раз редактировалось megaloman, 12-02-2015 в 12:14. Причина: Убрал лишние ключи в Dir

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

Отправлено: 10:27, 12-02-2015 | #5


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


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

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


Цитата Iska:
Цитата kot318:
chcp 1251 »
Это лишнее. Необходимо и достаточно сохранить пакетный файл в кодировке OEM/866.
Примерно так:
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (
`2^>nul dir /b /s /a:-d "E:\Песочница\0433\*.*"`
) do if /i "%%~xi" neq ".txt" echo del /f /q /a "%%~fi"
endlocal
exit /b 0
Для реального удаления уберите выделенное. »

Спасибо всем, первый пример работает просто идеально после того как добавили A (наконец то удалил скрытые файлы), второй не удаляет если в расширении 4 символа, третий ещё не успел проверить.
Подскажите пожалуйста а как сделать чтобы этот запущенный скрипт срабатывал каждые 5 секунд?
А то я через планировщик Windows (Task Sheduler) я попробовал назначить, а там минимум минута

Отправлено: 10:51, 12-02-2015 | #6


Ветеран


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

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


Цитата megaloman:
у меня с этим ключом readonly не удаляется »
ключ /f (del /a /f)
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:33, 12-02-2015 | #7


Ветеран


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

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


Цитата kot318:
после того как добавили A (наконец то удалил скрытые файлы), »
Это коллеге Foreigner'у спасибо надо сказать — я опять про этот параметр забыл .


Цитата kot318:
второй не удаляет если в расширении 4 символа, »
Странно, на взгляд — вроде как должен бы. Вы об этом коде?

Цитата kot318:
А то я через планировщик Windows (Task Sheduler) я попробовал назначить, а там минимум минута »
Кажись, «ручками» можно подправить и на более короткий срок. Но зачем так часто?! Полагаю, будет заметная нагрузка при большом числе каталогов.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:59, 12-02-2015 | #8


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


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

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


Цитата Foreigner:
set "command=dir /b /s /a-d »
Спасибо!

Цитата Iska:
второй не удаляет если в расширении 4 символа, »
Странно, на взгляд — вроде как должен бы. Вы об этом коде? »
Да, сейчас проверил, я был не прав, он удалил все пробные файлы кроме файла только на чтение.
Вот почему он его оставил, не потому что 4 символа, а потому что в свойствах только на чтение, простите невнимательность.
Вообще с этими файлами только на чтение и скрытый сплошные проблемы.

Цитата Iska:
Цитата kot318:
А то я через планировщик Windows (Task Sheduler) я попробовал назначить, а там минимум минута »
Кажись, «ручками» можно подправить и на более короткий срок. Но зачем так часто?! Полагаю, будет заметная нагрузка при большом числе каталогов. »
Преподаватель хочет, чтобы студенты не ложили другие в папку заданий, кроме текстовых.
Там для лабораторных работ папка.
Недавно он поймал вирус шифровальщик и тот перепортил всё что было, антивирус не помог.
Вот такие дела, важного ничего не было, но обидно очень, ведь его кто-то потом запустил двойным кликом.
Сейчас стоит задача защититься от двойного клика по непонятному файлу.

Есть ли какой-нибудь способ заставить крутиться ваш код на сервере каждые пять секунд?
Может быть из автозагрузки запуcтить vbs а в нём типа такого?

(Этот скрипт vbs лежит в атозагрузке и заставляет почту быть вечно запущенной, сколько бы её не закрывали):
Код: Выделить весь код
Dim WshShell

set WshShell = WScript.CreateObject("WScript.Shell")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

do'бесконечный цикл

Set colProcesses = objWMIService.ExecQuery _   
("Select * from Win32_Process Where Name = 'OUTLOOK.EXE'")
If colProcesses.Count = 0 Then   
Set colProcesses = Nothing  'вызывает удаление объекта из памяти и вообще его уничтожение.
WshShell.Run "OUTLOOK"
Else   
'Wscript.Echo " OUTLOOK.EXE Запущен."
End If
 
 
 wscript.sleep 10000 '  пауза, 10000 = 10 секунд.

loop' конец бесконечного цикла
И вот ещё вопрос, если VBS каждые 5 секунд будет вызывать батник, это ведь огромная нагрузки на жёсткий диск?!,
Может ли в батнике запущенном этот код выполняться бесконечно?

Последний раз редактировалось kot318, 12-02-2015 в 13:33.


Отправлено: 13:14, 12-02-2015 | #9


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


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

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


Моя задача решилась.
Огромное ВСЕМ спасибо!!! Ваш форум лучший.

Код: Выделить весь код
chcp 1251
@echo off
setlocal enableextensions enabledelayedexpansion
:loop
for /f "usebackq delims=" %%i in (
	`2^>nul dir /b /s /a:-d "E:\общая папка тест\*.*"`
) do if /i "%%~xi" neq ".txt" del /f /q /a "%%~fi"
ping -n 2 127.0.0.1 > NUL 
goto loop

Отправлено: 14:16, 12-02-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление Папки и всех подпапок и файлов sashok60 Скриптовые языки администрирования Windows 16 02-03-2016 08:54
CMD/BAT - Удаление всех файлов из подпапок Scumtron Скриптовые языки администрирования Windows 2 17-10-2013 16:15
CMD/BAT - Удаление всех файлов из папки кроме батника composter Скриптовые языки администрирования Windows 11 30-03-2013 08:25
CMD/BAT - [решено] Удаление всех файлов с одним именем на всех дисках ZARG-X Скриптовые языки администрирования Windows 3 08-03-2010 11:53
CMD/BAT - [решено] удаление всех файлов и подпапок в нескольких папках alexandri Скриптовые языки администрирования Windows 18 12-01-2010 05:33




 
Переход