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

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

iccup.platoon@vk 03-07-2013 17:27 2178760

батник на проверку свободного места по сети
 
Вложений: 1
  • 1.txt (17.80 KB, скачиваний: 15)
Компьютерный клуб. 52 2 компа + кассирский (админский). Написал батник на проверку свободного места по сети - но... Мягко говоря не работает. огорчен, мораль понижена. Помогите плз или подскажите где ошибся. Так же прошу Вас подсказать более правильный\адекватный\компактный код НО только на bat-языке... Собственно, сам код (так как он большой прилалагаю в форме файла):

iccup.platoon@vk 03-07-2013 17:33 2178765

Вложений: 1
  • 2.txt (1.60 KB, скачиваний: 15)
Еще был такой - тоже не работает

Iska 03-07-2013 17:34 2178767

«"%systemroot%\system32\mshta.exe" "javascript:try…» — да, это, конечно, на «bat-языке» :lol:.

Код:

wmic.exe /node:Machine01,Machine02,MachineN LogicalDisk where "DriveType=3" get SystemName, Name, FreeSpace

iccup.platoon@vk 03-07-2013 17:36 2178770

А не могли бы Вы конкретно по моему примеру написать? (имена машин А1, А2, ..., А52.)

iccup.platoon@vk 03-07-2013 17:53 2178780

ах да - wmic.exe у меня отсутствует =)

Iska 03-07-2013 19:01 2178807

Цитата:

Цитата iccup.platoon@vk
А не могли бы Вы конкретно по моему примеру написать? (имена машин А1, А2, ..., А52.) »

Код:

wmic.exe /node:А1,А2,…,А52 LogicalDisk where "DriveType=3" get SystemName, Name, FreeSpace
Цитата:

Цитата iccup.platoon@vk
ах да - wmic.exe у меня отсутствует »

Ни одной машины с Professional-версией нетути? Тогда держите WSH (само собой — не проверялось):
читать дальше »
Код:

Option Explicit

Const TristateFalse      =  0
Const TristateTrue      = -1
Const TristateUseDefault = -2

Dim i
Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx


Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")

For i = 1 To 52
        strComputer = "А" & CStr(i)
       
        WScript.Echo String(5 + Len(CStr(20 * 2^40)) + 4, "=")
        WScript.Echo "System: " & strComputer
        WScript.Echo
       
        If IsEnable(strComputer) Then
                Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
                Set collSWbemObjectSet = objSWbemServicesEx.ExecQuery("SELECT Name, FreeSpace FROM Win32_LogicalDisk WHERE DriveType=3")
               
                WScript.Echo String(5 + Len(CStr(20 * 2^40)) + 4, "=")
                WScript.Echo "System: " & strComputer
                WScript.Echo
                WScript.Echo PadLeft("Drive", 5), PadLeft("Free space", Len(CStr(20 * 2^40)) + 4)
                WScript.Echo String(5, "-"), String(Len(CStr(20 * 2^40)) + 4, "-")
               
                For Each objSWbemObjectEx In collSWbemObjectSet
                        With objSWbemObjectEx
                                WScript.Echo PadLeft(.Name, 5), PadRight(FormatNumber(.FreeSpace, 0, TristateFalse, TristateFalse, TristateTrue), Len(CStr(20 * 2^40)) + 4)
                        End With
                Next
               
                WScript.Echo String(5, "-"), String(Len(CStr(20 * 2^40)) + 4, "-")
                WScript.Echo
               
                Set collSWbemObjectSet = Nothing
                Set objSWbemServicesEx = Nothing
        Else
                WScript.Echo "Can't ping machine [" & strComputer & "]."
                WScript.Echo
        End If
Next

Set objSWbemLocator = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Function PadLeft(anyValue, intSize)
        PadLeft = Left(CStr(anyValue) & Space(intSize), intSize)
End Function
'=============================================================================

'=============================================================================
Function PadRight(anyValue, intSize)
        PadRight = Right(Space(intSize) & CStr(anyValue), intSize)
End Function
'=============================================================================

'=============================================================================
Function IsEnable(strAddress)
        Dim objSWbemObjectEx
       
        IsEnable = False
       
        For Each objSWbemObjectEx In objSWbemLocator.ConnectServer(".", "root\cimv2").ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strAddress & "'")
                With objSWbemObjectEx
                        If Not IsNull(.StatusCode) Then
                                If .StatusCode = 0 Then
                                        IsEnable = True
                                End If
                        End If
                End With
        Next
End Function
'=============================================================================


Запускать, разумеется, под консольной версией — «cscript.exe».

iccup.platoon@vk 04-07-2013 02:59 2179005

Сценарий прогоняется, но ничего не происходит...

Iska 04-07-2013 16:02 2179303

Цитата:

Цитата iccup.platoon@vk
Сценарий прогоняется, но ничего не происходит... »

А что должно происходить?

Как Вы его исполняете?

iccup.platoon@vk 05-07-2013 23:11 2180044

Вложений: 1
Просто запускаю)) ну двойным кликом)
получилось создать и получить то что мне нужно вот таким странным образом: даже не просите меня объяснить как это вё работает, но прикол в том что бедняга батник не успевал что-то сделать и в некоторых случаях выдавал пустые значения. Прикладываю файл

Iska 05-07-2013 23:41 2180078

Цитата:

Цитата iccup.platoon@vk
Просто запускаю)) ну двойным кликом) »

И:
Цитата:

Цитата iccup.platoon@vk
ничего не происходит... »

? Не верю.


Время: 20:01.

Время: 20:01.
© OSzone.net 2001-