Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Форум MMB » Всё о программе Multimedia Builder » ГОТОВЫЕ ОТВЕТЫ ПО MMB » Глобальный поиск файла
Глобальный поиск файла
YURIYДата: Воскресенье, 12 Апреля 2009, 13:39 | Сообщение # 1
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Автор оригинального сценария, представленного ниже - член клуба поклонников MMB - Rush.

Code
crlf$=CHR(13)+CHR(10)
space$=' '
searchfile$='Test.txt'
Run("cmd","wait,hide /c for /f "tokens=1 delims=\" %i in ('fsutil fsinfo drives ^| more') do (echo %i >> <Temp>\drives.txt)")
** Можно использовать другой вариант - с пропуском дисководов, в которых нет дисков
**p$='wait,hide /c @echo off & <System>\mshta.exe "javascript:var f,e,l=\'\';'
**p$=p$+'f=new ActiveXObject(\'scripting.filesystemobject\');e=new Enumerator(f.drives);'
**p$=p$+'for(;!e.atEnd();e.moveNext()){if(e.item().isready)l+=e.item().driveletter+\':\'}'
**p$=p$+'f.getstandardstream(1).write(l);close();" 1 | more > <Temp>\drives.txt'
**Run("cmd","p$")
** Загружаем и обрабатываем массив букв дисков (1-й вариант)
drives$=StrFromFile(<Temp>\drives.txt,1,-1)
drives$=StrChange(drives$,crlf$,'')
drives$=StrChange(drives$,space$,'')
drives$=St     rDel(drives$,1,6)
** При 2-м варианте все действия не нужны, достаточно одного
**drives$=StrFromFile(<Temp>\drives.txt,1,1)
For i=1 To GetArrayNum(drives$,:)
       drive$=GetArrayItem(drives$,:,i)
       searchparam$='wait,hide /c dir "'+drive$+':\\'+searchfile$+'" /a:-d /s | find /i /c "'
       searchparam$=searchparam$+searchfile$+'" > <Temp>\check.txt'
       Run("cmd","searchparam$")
       check=VAL(StrFromFile(<Temp>\check.txt,1,1))
       If (check) Then
         Message("Файл существует","")
         Break()
       End
Next i
If (check=0) Then
       Message("Файл не существует","")
End
Run("cmd","hide /c del <Temp>\drives.txt; <Temp>\check.txt /q")

А теперь пример "Глобального поиска файла" подробно:

1) Создаем необходимые константы, их можно и в скрипт загрузки проекта вставить

crlf$=CHR(13)+CHR(10)
space$=' '

2) Выбираем файл, который нужно найти

searchfile$='Test.txt'

3) Получаем список всех дисков на компьютере в файл

Run("cmd","wait,hide /c for /f "tokens=1 delims=\" %i in ('fsutil fsinfo drives ^| more') do (echo %i >> <Temp>\drives.txt)")
note: можно использовать другой вариант - с пропуском дисководов, в которых нет дисков
p$='wait,hide /c @echo off & <System>\mshta.exe "javascript:var f,e,l=\'\';'
p$=p$+'f=new ActiveXObject(\'scripting.filesystemobject\');e=new Enumerator(f.drives);'
p$=p$+'for(;!e.atEnd();e.moveNext()){if(e.item().isready)l+=e.item().driveletter+\':\'}'
p$=p$+'f.getstandardstream(1).write(l);close();" 1 | more > <Temp>\drives.txt'
Run("cmd","p$")

4) Загружаем и обрабатываем массив букв дисков (1-й вариант)

drives$=StrFromFile(<Temp>\drives.txt,1,-1)
drives$=StrChange(drives$,crlf$,'')
drives$=StrChange(drives$,space$,'')
drives$=StrDel(drives$,1,6)
note: при 2-м варианте все действия не нужны, достаточно одного
drives$=StrFromFile(<Temp>\drives.txt,1,1)

5) Запускаем цикл по проверке всех дисков на наличие файла

For i=1 To GetArrayNum(drives$,:)

6) Получаем букву диска

drive$=GetArrayItem(drives$,:,i)

7) Выполняем проверку полученного диска на наличие файла (операция быстрая)

searchparam$='wait,hide /c dir "'+drive$+':\\'+searchfile$+'" /a:-d /s | find /i /c "'
searchparam$=searchparam$+searchfile$+'" > <Temp>\check.txt'
Run("cmd","searchparam$")

8) Получаем значение (TRUE/FALSE) наличия файла на диске

check=VAL(StrFromFile(<Temp>\check.txt,1,1))

9) Если значение check=TRUE тогда завершаем поиск - файл существует

If (check) Then
Message("Файл существует","")
Break()
End

10) Иначе идет проверка следующего диска

Next i

11) Если в результате обхода всех дисков значение check=FALSE - файла с таким именем нет

If (check=0) Then
Message("Файл не существует","")
End

12) Удаляем временные файлы

Run("cmd","hide /c del <Temp>\drives.txt; <Temp>\check.txt /q")



Вечная память Андрею Сергееву!
 
Форум MMB » Всё о программе Multimedia Builder » ГОТОВЫЕ ОТВЕТЫ ПО MMB » Глобальный поиск файла
  • Страница 1 из 1
  • 1
Поиск: