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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » delete C:\*.* /exclude=zzz.lst ?

Ответить
Настройки темы
delete C:\*.* /exclude=zzz.lst ?

Аватара для semiono

Ветеран


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

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


У меня на C: лежат файлы, к примеру -
/~ [папка]
/BOOT.INI
/NTDETECT.COM
/NTLDR

как мне удалить всё остальное исключив этот полезный контент?
вариант с батником если не трудно тоже пожалуйста, так как разные бывают задачи?

-------
Полезное сообщение


Отправлено: 15:43, 12-06-2009

 

Аватара для Creat0R

Must AutoIt


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

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


Код: Выделить весь код
#include <File.au3>

_FileDeleteEx("C:\Folder", "*.*", "|BOOT.INI|NTDETECT.COM|NTLDR|")

Func _FileDeleteEx($sPath, $sMask, $sExclude_List="")
    Local $aFiles = _FileListToArray($sPath, $sMask)

    For $i = 1 To UBound($aFiles)-1
        If $sExclude_List = "" Or Not StringInStr($sExclude_List, "|" & $aFiles[$i] & "|") Then _
            FileDelete($sPath & "\" & $aFiles[$i])
    Next
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

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

Отправлено: 16:12, 12-06-2009 | #2



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

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


Аватара для semiono

Ветеран


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

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


C:\Folder - это для чего? Какраз из этой папки и удаляет! Хотя я хотел папку как исключение.
Я переименовал C:\Folder в свой каталог винды C:\~ и скрипт снёс все потроха винды, что только смог
Хотя результат ожидался обратный.

Причём мусор всякий на диске C:\ так и остался не тронутым.

C:\~ (винда)
C:\Ultra$ISO
C:\BOOT.INI
C:\desktop.ini
C:\h2r3F.tmp
C:\h2r35.tmp
C:\h2r86.tmp
C:\New AutoIt v3 Script.au3
C:\NTDETECT.COM
C:\NTLDR
C:\PrePict.htm
C:\Rar$CM06.422
C:\Rar$SF06.203
C:\RECYCLED - это у меня файл ;-)
C:\z.cmd
C:\z.reg

-------
Полезное сообщение


Отправлено: 20:00, 15-06-2009 | #3


Аватара для beve

Старожил


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

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


Цитата semiono:
Хотя результат ожидался обратный »
Так внимательно разбирай пример CreatOR-a, $sExclude_List="" по-твоему для чего?

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 20:19, 15-06-2009 | #4


Аватара для Creat0R

Must AutoIt


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

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


Цитата semiono:
C:\Folder - это для чего? »
Это исходная папка, в которой нужно удалять всё кроме списка исключении. «C:\» как то не рискнул написать

Цитата semiono:
мусор всякий на диске C:\ так и остался не тронутым »
А функции ведь нужно указать что именно удалять, если используется C:\~, то при чём тут C:\?

Что именно нужно сделать? Удалить всё на диске C: кроме указанных файлов? подробнее задачу следует описывать...

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 20:34, 15-06-2009 | #5


Аватара для semiono

Ветеран


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

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


Цитата beve:
Так внимательно разбирай пример CreatOR-a, $sExclude_List="" по-твоему для чего? »
Внешний лист исключений лучше бы не делать, а прямо описать в скрипте все исключения сразу.

Цитата Creat0R:
А функции ведь нужно указать что именно удалять »

Если указать что удалять, то можно и батником. Надо указать наоборот то, что не следует удалять.


Я хотел удалить всё с диска C: кроме папки виндовс и загрузочных файлов.
Program Files и Documents and Settings у меня там нет.
Хотя не помешало бы обойти стороной корзину и system volume information, хотя у меня лично таких папок нет, и pagefile.sys тоже не плохо бы учесть, опять же на всякий случай, но можно и не учитывать.

-------
Полезное сообщение


Отправлено: 21:52, 15-06-2009 | #6


Аватара для Creat0R

Must AutoIt


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

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


Цитата semiono:
Внешний лист исключений лучше бы не делать, а прямо описать в скрипте все исключения сразу »
Это и есть список исключении!

Цитата semiono:
Надо указать наоборот то, что не следует удалять »
Я к тому, что нужны явные указания, скрипт гадать не умеет.

Цитата semiono:
Я хотел удалить всё с диска C: кроме папки виндовс и загрузочных файлов »
Вот значит скрипт, в переменной $sExclude_List указываем файлы и папки которые не нужно удалять (через разделитель |):

Код: Выделить весь код
#include <File.au3>

$sExclude_List = "BOOT.INI|NTDETECT.COM|NTLDR|RECYCLED"
$sExclude_List = "|" & $sExclude_List & "|"

$sPath = "C:\Folder"
$aFiles = _FileListToArray($sPath, "*.*")

For $i = 1 To UBound($aFiles)-1
    If Not StringInStr($sExclude_List, "|" & $aFiles[$i] & "|") Then
        If StringInStr(FileGetAttrib($sPath & "\" & $aFiles[$i]), "D") Then
            DirRemove($sPath & "\" & $aFiles[$i], 1)
        Else
            FileDelete($sPath & "\" & $aFiles[$i])
        EndIf
    EndIf
Next
«C:\Folder» заменяем на «C:\».

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

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

Отправлено: 22:21, 15-06-2009 | #7


Аватара для semiono

Ветеран


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

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


Код: Выделить весь код
Else
	FileSetAttrib($sPath & "\" & $aFiles[$i], "-RASHNOT")
        FileDelete($sPath & "\" & $aFiles[$i])
А вот это было бы так лучше
$sPath = @SystemDrive а почему нету такого?

Помниться как в WinAPI я искал @WorkingDir, там это тоже через голову надо было перевернуться... lstrcat 0_0

-------
Полезное сообщение


Последний раз редактировалось semiono, 15-06-2009 в 23:35.


Отправлено: 23:19, 15-06-2009 | #8


Аватара для Creat0R

Must AutoIt


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

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


Цитата semiono:
почему нету такого? »
Есть, как нету?!

Цитата semiono:
Помниться как в WinAPI я искал @WorkingDir »
А зачем? Если есть макрос, который тем же WinAPI и образуется.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:45, 15-06-2009 | #9


Аватара для semiono

Ветеран


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

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


Оффтопик... Пожалуйста!!

Код:
Код: Выделить весь код
$InstallDir = RegRead("HKLM\Software\Native Instruments\AkoustikPiano","InstallDir")
$file = FileOpen($InstallDir & "\AkoustikPiano.reg", 10)
FileWrite($file, "Windows Registry Editor Version 5.00" & @CRLF & @CRLF)
FileWrite($file, "[HKEY_LOCAL_MACHINE\Software\Native Instruments\AkoustikPiano]" & @CRLF)
Мне надо в зависимости от @OSArch использовать Wow6432Node затычку:

если x86 WinXP то обычно HKLM\Software\Native Instruments.....
если x64 WinXP то так HKLM\Software\Wo6432Node\Native Instruments....

как можно такой код зделать? что вообще с этим @OSArch делать?
так чтоли
If @OSArch = 1 then... ???

И как лучше, два блока написать для разных архитектур, или зделать одну переменную $var под ветку реестра,
которую потом менять по условию?
Напишите полностью код? Если понятно конечно что я спрашиваю?
Да впринцыпе тут всё просто, в разных x86 x64 запись реестра может быть в разных местах,
и различием будет лишь Wo6432Node

-------
Полезное сообщение


Отправлено: 00:11, 16-06-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » delete C:\*.* /exclude=zzz.lst ?

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Ctrl+Alt+Delete в WelcomeSreeen Klinifin Microsoft Windows 2000/XP 5 05-04-2009 14:43
ALTLinux - [решено] нет файла menu.lst hub-lex Общий по Linux 20 04-04-2009 00:07
ASUS R50 постоянно горит индикатор Zzz Dis74 Ноутбуки 4 12-01-2009 11:47
В XCOPY не работает EXCLUDE AlexKKK Microsoft Windows NT/2000/2003 3 15-02-2008 14:52
Delete khvalera Программирование и базы данных 7 08-12-2003 17:01




 
Переход