andr_mozg
26-01-2015, 12:48
Добрый день.
Скрипт я написал, корявый но работает, но очень медленный, решил использовать WMI но возникла проблема.
Мой скрипт
ServerShare = "\\localhost\C$\windows\Temp"
'UserName = "domain\username"
'Password = "password"
Set NetworkObject = CreateObject("WScript.Network")
Set FSO = CreateObject("Scripting.FileSystemObject")
NetworkObject.MapNetworkDrive "", ServerShare, False
Set Directory = FSO.GetFolder(ServerShare)
For Each File In Directory.Files
If UCase(FSO.GetExtensionName(File.Name)) = "ZIP" or UCase(FSO.GetExtensionName(File.Name)) = "XML" Then
WScript.Echo File.Name
end if
Next
NetworkObject.RemoveNetworkDrive ServerShare, True, False
Все работает, но если я указываю реальную шару с большим кол-во файлов (естественно все пермишены в порядки)
ну к примеру 14000 файлов а удв. маске скажим два, то скрипт работает до 5 минут, что не комильфо.
я пишу чуть другой скрипт
On Error Resume Next
ServerShare = "\\localhost\C$\Users\root\AppData\Local\Temp"
'UserName = "domain\username"
'Password = "password"
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
Set NetworkObject = CreateObject("WScript.Network")
Set FSO = CreateObject("Scripting.FileSystemObject")
NetworkObject.MapNetworkDrive "", ServerShare, False
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If
Set colFiles = objService.ExecQuery("SELECT Name FROM CIM_DataFile WHERE Drive = '\\\\localhost\\C$' AND Path = '\\Users\\root\\AppData\\Local\\Temp\\' AND (Extension = 'xml' OR Extension = 'zip')")
For Each objFile In colFiles
WScript.Echo objFile.Name
Next
WScript.Echo "Всего файлов: " & colFiles.Count
NetworkObject.RemoveNetworkDrive ServerShare, True, False
но если он (ну не этот а с использованием WMI )
objService.ExecQuery("SELECT Name FROM CIM_DataFile WHERE Drive='C:' AND Path = '\\Users\\root\\AppData\\Local\\Temp\\' AND (Extension = 'xml' OR Extension = 'zip')")
прекрасно работает с локальными директориями и показывает хороший результат по скорости, то как его натравить на шару я не вкурю.
Шара не должна монтироваться как диск! ищу способ обращение как к сетевой шаребез диска типа \\Server_name\Shara_dir
Поможите люди добрые.
Спасибо
Скрипт я написал, корявый но работает, но очень медленный, решил использовать WMI но возникла проблема.
Мой скрипт
ServerShare = "\\localhost\C$\windows\Temp"
'UserName = "domain\username"
'Password = "password"
Set NetworkObject = CreateObject("WScript.Network")
Set FSO = CreateObject("Scripting.FileSystemObject")
NetworkObject.MapNetworkDrive "", ServerShare, False
Set Directory = FSO.GetFolder(ServerShare)
For Each File In Directory.Files
If UCase(FSO.GetExtensionName(File.Name)) = "ZIP" or UCase(FSO.GetExtensionName(File.Name)) = "XML" Then
WScript.Echo File.Name
end if
Next
NetworkObject.RemoveNetworkDrive ServerShare, True, False
Все работает, но если я указываю реальную шару с большим кол-во файлов (естественно все пермишены в порядки)
ну к примеру 14000 файлов а удв. маске скажим два, то скрипт работает до 5 минут, что не комильфо.
я пишу чуть другой скрипт
On Error Resume Next
ServerShare = "\\localhost\C$\Users\root\AppData\Local\Temp"
'UserName = "domain\username"
'Password = "password"
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
Set NetworkObject = CreateObject("WScript.Network")
Set FSO = CreateObject("Scripting.FileSystemObject")
NetworkObject.MapNetworkDrive "", ServerShare, False
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If
Set colFiles = objService.ExecQuery("SELECT Name FROM CIM_DataFile WHERE Drive = '\\\\localhost\\C$' AND Path = '\\Users\\root\\AppData\\Local\\Temp\\' AND (Extension = 'xml' OR Extension = 'zip')")
For Each objFile In colFiles
WScript.Echo objFile.Name
Next
WScript.Echo "Всего файлов: " & colFiles.Count
NetworkObject.RemoveNetworkDrive ServerShare, True, False
но если он (ну не этот а с использованием WMI )
objService.ExecQuery("SELECT Name FROM CIM_DataFile WHERE Drive='C:' AND Path = '\\Users\\root\\AppData\\Local\\Temp\\' AND (Extension = 'xml' OR Extension = 'zip')")
прекрасно работает с локальными директориями и показывает хороший результат по скорости, то как его натравить на шару я не вкурю.
Шара не должна монтироваться как диск! ищу способ обращение как к сетевой шаребез диска типа \\Server_name\Shara_dir
Поможите люди добрые.
Спасибо