Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   закрыть все окна explorer с определенным закголовком (http://forum.oszone.net/showthread.php?t=313769)

Опиум 12-04-2016 13:21 2625371

закрыть все окна explorer с определенным закголовком
 
написана давно прога на дельфях, но гибкости некоторой нет.
Открыто много окон explorer на разные папки, в т.ч.и на сетевыу "\\....."

Скрипт должен закрыть все окна, чей заголовок начинается? например с \\SERVER\.....

Kazun 12-04-2016 13:32 2625381

PowerShell:
Код:

(New-Object -Com Shell.Application).Windows() | Where LocationUrl -like "*//Server/*" | Foreach Quit

Опиум 12-04-2016 13:46 2625387

сорри, не уточнил... на wsh бы...

Iska 12-04-2016 14:57 2625410

Код:

Option Explicit

Dim strPattern
Dim objWebBrowser


strPattern = "SERVER"

For Each objWebBrowser In WScript.CreateObject("Shell.Application").Windows
        With objWebBrowser
                If TypeName(.Document) = "IShellFolderViewDual2" Then
                        If StrComp(Left(.LocationURL, Len("file://" & strPattern)), "file://" & strPattern, vbTextCompare) = 0 Then
                                'WScript.Echo .LocationURL
                                .Quit
                        End If
                End If
        End With
Next

WScript.Quit 0


Опиум 12-04-2016 15:16 2625419

Iska, я речь веду не про не про браузер, а про windows explorer...

Iska 12-04-2016 15:46 2625433

Опиум, я тоже. Браузер — это «HTMLDocument», Проводник — «IShellFolderViewDual2».

Опиум 13-04-2016 08:59 2625643

Iska, просто у меня твой скрипт не отработал почемуто. Плотно не разбирался.

Опиум 13-04-2016 11:28 2625679

Цитата Iska:
Проводник — «IShellFolderViewDual2». »
а что тогда такое IShellFolderViewDual3 ?)

который у меня (поэтому твой скрипт и не аллё)

я заменил Left на конструкцию
Код:

Instr(TypeName(.Document),"IShellFolderViewDual")=1
и заработало.
Кстати. почему вы используете Left хотя Instr(....)=1 проще?

Iska 13-04-2016 12:50 2625699

Цитата:

Цитата Опиум
Проводник — «IShellFolderViewDual2». »
а что тогда такое IShellFolderViewDual3 ?)
который у меня (поэтому твой скрипт и не аллё) »

Опиум, у Вас какая ОС?

Цитата:

Цитата Опиум
я заменил Left на конструкцию
Код:

Instr(TypeName(.Document),"IShellFolderViewDual")=1
»

У меня нет там функции «Left()»:
Цитата:

Цитата Iska
Код:

If TypeName(.Document) = "IShellFolderViewDual2" Then
»

Цитата:

Цитата Опиум
Кстати. почему вы используете Left хотя Instr(....)=1 проще? »

Проще… и неправильно. Если речь про:
Цитата:

Цитата Iska
Код:

If StrComp(Left(.LocationURL, Len("file://" & strPattern)), "file://" & strPattern, vbTextCompare) = 0 Then
»


Опиум 13-04-2016 14:02 2625737

Цитата:

Цитата Iska
у Вас какая ОС? »

Microsoft Windows [Version 6.1.7601] w7 eng ent sp1

Цитата:

Цитата Iska
Проще… и неправильно. Если речь про: »

где может быть косяк?

Iska 13-04-2016 14:12 2625742

Цитата:

Цитата Опиум
где может быть косяк? »

Дабы не возникло расхождений (как выше), покажите Ваш полный код.

Опиум 14-04-2016 08:53 2625944

Iska, Код ваш, я просто заменил left на instr

Код:

Option Explicit

Dim strPattern,s,c
Dim objWebBrowser


strPattern = ""
c=0

For Each objWebBrowser In WScript.CreateObject("Shell.Application").Windows
        With objWebBrowser
                'WScript.Echo  TypeName(.Document)
                'If TypeName(.Document) = "IShellFolderViewDual3" Then
                If Instr(TypeName(.Document),"IShellFolderViewDual")=1 Then
                        'If StrComp(Left(.LocationURL, Len("file://" & strPattern)), "file://" & strPattern, vbTextCompare) = 0 Then
                        s=.LocationURL
                        'проверяем, если открыт сетевой ресурс \\****
                        If (Instr(s,"file://")=1) and (mid(s,8,1)<>"/")Then
                                'WScript.Echo .LocationURL
                                c=c+1
                                .Quit
                        End If
                End If
        End With
Next
WScript.Echo "Closed:" & c
WScript.Quit 0



Время: 05:56.

Время: 05:56.
© OSzone.net 2001-