Показать полную графическую версию : [решено] Удаление всех файлов (всех типов) из всех подпапок, кроме расширений txt
Здравствуйте, у нас в институте нужно удалять из общей папки сервера все файлы кроме текстовых.
Не удаляет скрытые файлы, хотя /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
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
Для реального удаления уберите выделенное.
Foreigner
12-02-2015, 09:13
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"
Foreigner, да, это ещё быстрее. А я опять забыл в своём коде про «/a» . Добавил.
megaloman
12-02-2015, 10:27
После подсказки 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 как-то элегантнее :-(
Цитата 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) я попробовал назначить, а там минимум минута:(
Foreigner
12-02-2015, 11:33
у меня с этим ключом readonly не удаляется »
ключ /f (del /a /f)
после того как добавили A (наконец то удалил скрытые файлы), »
Это коллеге Foreigner'у спасибо надо сказать — я опять про этот параметр забыл ;).
второй не удаляет если в расширении 4 символа, »
Странно, на взгляд — вроде как должен бы. Вы об этом коде (http://forum.oszone.net/post-2470221.html#post2470221)?
А то я через планировщик Windows (Task Sheduler) я попробовал назначить, а там минимум минута »
Кажись, «ручками» можно подправить и на более короткий срок. Но зачем так часто?! Полагаю, будет заметная нагрузка при большом числе каталогов.
set "command=dir /b /s /a-d »
Спасибо!
второй не удаляет если в расширении 4 символа, »
Странно, на взгляд — вроде как должен бы. Вы об этом коде? »
Да, сейчас проверил, я был не прав, он удалил все пробные файлы кроме файла только на чтение.
Вот почему он его оставил, не потому что 4 символа, а потому что в свойствах только на чтение, простите невнимательность.
Вообще с этими файлами только на чтение и скрытый сплошные проблемы.
Цитата 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 секунд будет вызывать батник, это ведь огромная нагрузки на жёсткий диск?!,
Может ли в батнике запущенном этот код выполняться бесконечно?
Моя задача решилась.
Огромное ВСЕМ спасибо!!! Ваш форум лучший.
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
ping -n 2 127.0.0.1 > NUL »
Ежесекундно? Зачем?!!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.