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

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

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

Аватара для semiono

Ветеран


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

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


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

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

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


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

 

Аватара для Creat0R

Must AutoIt


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

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


Цитата semiono:
как можно такой код зделать? »
If @OSArch = "x86" Then ...
В справке ведь оно всё написано.

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

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

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

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

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



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

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


Аватара для semiono

Ветеран


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

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


Точно! Всё легко получилось, просто ифов понаставил как есть, я думал сложнее будет!
Кстати в хелпе мало написанно, я бы ещё долго думал, как If @OSArch = "x86" Then составить,
я бы комплексовал бы, как обычно кода боюсь.
Код: Выделить весь код
If @OSArch = "x86" Then
$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)
FileWrite($file, """SYSTEMID""=" & $sysID & "" & @CRLF & @CRLF)
FileClose($file)
EndIf

If @OSArch = "x64" Then
$InstallDir = RegRead("HKLM\Software\Wow6432Node\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\Wow6432Node\Native Instruments\AkoustikPiano]" & @CRLF)
FileWrite($file, """SYSTEMID""=" & $sysID & "" & @CRLF & @CRLF)
FileClose($file)
EndIf
Жалко что reg.exe export отдельные value не сохраняет в файл, а в InnoSetup даже RegRead не нашлось,
пришлось к AutoIt обращаться, как всегда только это и выручает!

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


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


Аватара для Creat0R

Must AutoIt


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

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


Цитата semiono:
я бы комплексовал бы, как обычно кода боюсь »
Нечего бояться, без эксперементов трудно (невозможно?) достичь желаемых результатов

Что касается кода выше, то можно укоротить:

Код: Выделить весь код
$sRegKeyName = ""

Switch @OSArch
    Case "x86"
        $sRegKeyName = "HKLM\Software\Native Instruments\AkoustikPiano"
    Case "x64"
        $sRegKeyName = "HKLM\Software\Wow6432Node\Native Instruments\AkoustikPiano"
EndSwitch

$InstallDir = RegRead($sRegKeyName, "InstallDir")

$sFile_Content = _
    "Windows Registry Editor Version 5.00" & @CRLF & @CRLF & _
    "[" & $sRegKeyName & "]" & @CRLF & _
    '"SYSTEMID"=' & $sysID & @CRLF & @CRLF

$hFileOpen = FileOpen($InstallDir & "\AkoustikPiano.reg", 10)
FileWrite($hFileOpen, $sFile_Content)
FileClose($hFileOpen)

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

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

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

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

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


Аватара для semiono

Ветеран


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

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


Это очень интересно! Очень хорошо!

; это зачем, пустая переменная?
$sRegKeyName = ""

; а как используется выключатель, ведь далее в коде ни @OSArch ни x86 нигде не встречается!?
; а понял, наверное ядро само уже подставляет всюду переменные когда имеется такой блок: (типа директивы)
Switch @OSArch
Case "x86"
$sRegKeyName = "HKLM\Software\Native Instruments\AkoustikPiano"
Case "x64"
$sRegKeyName = "HKLM\Software\Wow6432Node\Native Instruments\AkoustikPiano"
EndSwitch

$InstallDir = RegRead($sRegKeyName, "InstallDir")

$sFile_Content = _
"Windows Registry Editor Version 5.00" & @CRLF & @CRLF & _
"[" & $sRegKeyName & "]" & @CRLF & _
'"SYSTEMID"=' & $sysID & @CRLF & @CRLF
; я не ошибусь если именно тут < буду наращивать регфайл содержимое ещё?
; ато тестировать сразу сложно под две платформы, вообще мне такой код позарез всегда нужен!


$hFileOpen = FileOpen($InstallDir & "\AkoustikPiano.reg", 10)
FileWrite($hFileOpen, $sFile_Content)
FileClose($hFileOpen)

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


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


Аватара для Creat0R

Must AutoIt


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

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


Цитата semiono:
это зачем, пустая переменная »
Это объявление переменной.

Цитата:
как используется выключатель, ведь далее в коде ни @OSArch ни x86 нигде не встречается
Switch это как бы If, только тут мы делаем выбор, что совпадает с макросом. См. справку, дольше чем пару секунд, её нужно вызубрить, и потом заглядывать для подтверждения - Я до сих пор туда обращаюсь за помощью.

Цитата:
я не ошибусь если именно тут < буду наращивать регфайл содержимое ещё?
Нет, там можно добавлять строчки по аналогии первых (через разделитель & _).

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

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

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

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

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


Аватара для semiono

Ветеран


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

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


Цитата Creat0R:
Нет, там можно добавлять строчки по аналогии первых (через разделитель & _). »
я догадался! Подчёркивание это перенос строки! & _ (в хелпе лично я это так и не нашёл)

Creat0R, мне очень помогло использование Switch для архитектуры.
Я это буду применять относительно всего кода. Но посмотри, всё ли правильно, нельзя ли оптимизировать?
Так как много реестр записей может быть, то получается много свитчеров каждый из которых занимает по шесть строк.
Хотя я лично думаю что это никак не изменишь наверное. Ну тогда и так хорошо.
И ещё, я решил это вначале кода писать, так как это полюбому глобально для всей программы.
Вот пример, всё ли правильно? Или сократить можно?
Код: Выделить весь код
#Include <Clipboard.au3>
#include <GuiTab.au3>

Switch @OSArch
    Case "x86"
        $sRegApps = "HKEY_LOCAL_MACHINE\Software\Native Instruments\AkoustikPiano"
    Case "x64"
        $sRegApps = "HKEY_LOCAL_MACHINE\Software\Wow6432Node\Native Instruments\AkoustikPiano"
EndSwitch

Switch @OSArch
    Case "x86"
        $sRegVSTs = "HKEY_LOCAL_MACHINE\Software\VST"
    Case "x64"
        $sRegVSTs = "HKEY_LOCAL_MACHINE\Software\Wow6432Node\VST"
EndSwitch
	
RegDelete($sRegApps,"KEY")
RegDelete($sRegApps,"SNO")
RegDelete($sRegApps,"SYSTEMID")

ProgressOn("Running...","","")
ProgressSet(100)

BlockInput(1)

; далее тут работы с окном, в которых тоже используются переменные реестра
; так что тоже удобно $sRegApps, $sRegVSTs по архитектуре передавать.

BlockInput(0)

ProgressOff()

; тут практически твой код, только на два файла уже...
	
$sDir1 = RegRead($sRegApps, "InstallDir")

$sDir2 = RegRead($sRegVSTs, "VSTPluginsPath") & "\AkoustikPiano"

$sFile_Content = _
    "Windows Registry Editor Version 5.00" & @CRLF & @CRLF & _
    "[" & $sRegApps & "]" & @CRLF & _
	'"SNO"="' & $SNO & '"' & @CRLF & _
	'"SYSTEMID"="' & $sysID & '"' & @CRLF & _
    '"KEY"="' & $KEY & '"' & @CRLF & @CRLF

$hFileOpen = FileOpen($sDir1 & "\AkoustikPiano.reg", 10)
FileWrite($hFileOpen, $sFile_Content)
FileClose($hFileOpen)

$hFileOpen = FileOpen($sDir2 & "\AkoustikPiano.reg", 10)
FileWrite($hFileOpen, $sFile_Content)
FileClose($hFileOpen)
Всё ли хорошо? Чтоб потом не переделывать, ато это как бы будет шаблон на много разных программ.

Есть идея, а нельзя ли свитчеры с описанием реестра x86_x64 вынести в инклюд - внешний скрипт?
Только так чтоб это было универсально, чтоб потом в самом коде можно было какугодно писать без проблем?
Да и сам инклюд чтоб можно было независимо наращивать, ключей добавлять?
Я практически наверное сам уже на это отвечаю, но может быть я не знаю чегото важного тут?

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


Отправлено: 15:04, 17-06-2009 | #16


Аватара для Creat0R

Must AutoIt


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

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


Цитата semiono:
Вот пример, всё ли правильно? Или сократить можно? »
Можно, зачем например там два раза используется Switch @OSArch, в первом сравнение можно назначить нужные переменные:

Код: Выделить весь код
Switch @OSArch
    Case "x86"
        $sRegApps = "HKEY_LOCAL_MACHINE\Software\Native Instruments\AkoustikPiano"
        $sRegVSTs = "HKEY_LOCAL_MACHINE\Software\VST"
    Case "x64"
        $sRegApps = "HKEY_LOCAL_MACHINE\Software\Wow6432Node\Native Instruments\AkoustikPiano"
        $sRegVSTs = "HKEY_LOCAL_MACHINE\Software\Wow6432Node\VST"
EndSwitch
И ещё, зачем длва раза записывать одно и то-же содержимое в файл, когда проще его скопировать:

Код: Выделить весь код
$hFileOpen = FileOpen($sDir1 & "\AkoustikPiano.reg", 10)
FileWrite($hFileOpen, $sFile_Content)
FileClose($hFileOpen)

FileCopy($sDir1 & "\AkoustikPiano.reg", $sDir2 & "\AkoustikPiano.reg", 8+1)
Цитата semiono:
нельзя ли свитчеры с описанием реестра x86_x64 вынести в инклюд - внешний скрипт? »
Не желательно, include поместит всё содержимое выводимого скрипта в начало (там где include вызывается), а присвоение динамических переменных желательно делать "на виду".

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

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

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

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

Отправлено: 15:36, 17-06-2009 | #17


Аватара для semiono

Ветеран


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

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


Цитата Creat0R:
Можно, зачем например там два раза используется Switch »
Вот я ступил, действительно просто всё! Меня метки Case отвлекли, я думал их же нельзя сменить,
а сам контент как возможность какраз таки и проморгал.
А с копированием тоже хорошая идея, хотя я и подумаю, но наверное она лучше конечно!
Цитата Creat0R:
присвоение динамических переменных желательно делать "на виду". »
ну код вобщем-то обозримый, хотя с этими сокращениями уже видимо не стоит.

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


Отправлено: 22:51, 17-06-2009 | #18



Компьютерный форум 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




 
Переход