vbscript

Sziasztok,

 

VBScriptel kapcsolatban szeretnék segítséget kérni.

Olyan VBScriptet szeretnék csinálni amely megnézi egy adott fájl aktuális méretét és a legutolsó módosításának a dátumát és ezt kiiratnám egy html felületre.

Ha ez megvan akkor kibővíteném úgy, hogy egy adott mappába megnézném, hogy melyik belső mappa a legfrissebb.

 

Mivel kezdő vagyok a témában, eddig működő verziót nem sikerült létrehoznom és a neten sem találtam semmi használható megoldást erre.

Köszönöm a segítséget.

Hozzászólások

Miért épp vbscriptet szeretnél csinálni erre? Hol akadtál el?

Üdv,
Marci

azért vbscriptet, mert már van egy nagyobb működő lekérdezés csoport amihez szeretném majd hozzárakni ezeket.

jelenleg itt tartok:

Dim fso:Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim oFolder:Set oFolder = fso.GetFile( "file elérési út")
Wscript.Echo "Fájl neve "& oFolder.Name & " : " & round(oFolder.Size/1024/1024,2)&" MB"

ez működik szépen kiírja a file méretét, de a dátumát nemtom hogy kell.

köszi így sikerült kiírja a dátumot is szépen.

viszont azzal a hibával szembesültem, hogy ha egymás után több fájlnak az adatait akarom kiiratni mindig csak a "sorban" utolsót írja ki. mit csinálok rosszul?

//az "strbody5" el egy html felületre iratom ki.

 

Dim objFS, objFile
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("\\fájl elérési út\fájl")

strBody5= "<hr> "& objFile.Name & " utolso modositasanak datuma: "& objFile.DateLastModified &"<hr>  "&  objFile.Name & " merete: " & round(objFile.Size/1024/1024,2)&" MB"

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("\\fájl elérési út\fájl2")

strBody5= "<hr> "& objFile.Name & " utolso modositasanak datuma: "& objFile.DateLastModified &"<hr>  "&  objFile.Name & " merete: " & round(objFile.Size/1024/1024,2)&" MB"

igen pontosítom bocsi.

Azt szeretném vizsgálni, hogy van egy mappa amibe naponta generálódik sok, DATA... kezdőnevű mappa és ezek közül szeretném azt kiiratni, amelyik a script futtatásának idejéhez képest a legutóbb jött létre. Vagyis melyik a legkésőbb létrejött DATA% kezdőnevű mappa.

A mappák nevei úgy generálódnak, hogy data+időpont, ezért arra gondoltam, hogy valami if-es vizsgálattal megnézem DATA% és utána a létrejöttének az időpontját vizsgálom valahogy, de itt el is akadtam :D

Ebben pontosan mi okoz nehézséget? Vannak rá kész példák, megtalálod. Ha vannak/lesznek/lehetnek a könyvtárban nem DATA* nevű könyvtárak is, akkor elhelyezel egy ezt vizsgáló feltételes utasítást. Ha nem tudod, hogyan kell karakterláncot vizsgálni, rákeresel, megérted, alkalmazod. Te is leírtad, mit kellene csinálni ("foreach", "if"), szóval jó lenne tudni, mi akadályoz meg abban, hogy csináld? Nem egyértelmű a nyelv szintaktikája, vagy hol akad el a folyamat?

:)

találtam egy ilyen scriptet:

és ez le is fut szépen csak azt nemtom, hogy hogyan pontosítsam, hogy csak a DATA kezdőnevűeket irassa ki.

Erre esetleg van ötleted?

 

Function GetRecentFolder(path)
  Dim fso, folder
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set GetRecentFolder = Nothing
  For Each folder in fso.GetFolder(path).SubFolders
    If GetRecentFolder is Nothing Then
      Set GetRecentFolder = folder
    ElseIf folder.DateLastModified > GetRecentFolder.DateLastModified Then
      Set GetRecentFolder = folder
    End If
  Next
End Function

Dim recentFile
Set recentFile = GetRecentFolder("c:\Elérési út")
If recentFile is Nothing Then
  WScript.Echo "No recent files found"
Else
  WScript.Echo "Recent file is " & recentFile.Name & " " & recentFile.DateLastModified
End If

Sikerült megcsinálni a scriptet, itt van hátha más is tudja hasznosítani:

Function GetRecentFolder(path)
  Dim fso, folder
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set GetRecentFolder = Nothing
  For Each folder in fso.GetFolder(path).SubFolders
    If GetRecentFolder is Nothing  Then
      Set GetRecentFolder = folder
    ElseIf folder.DateLastModified > GetRecentFolder.DateLastModified AND instr (folder.Name, "DATA") Then
      Set GetRecentFolder = folder
    End If
  Next
End Function

Hibás eredményt adhat, mert az összehasonlításból nincs kizárva a DATA karakterláncot nem tartalmazó könyvtárnevek vizsgálata. Az instr-t vidd a feltételes utasításon kívülre.

Ha valóban csak könyvtárnév eleji egyezést szeretnél, az instr(...) = 1 formát használd.

Ha azt szeretnéd, hogy ne számítson a kis/nagybetű, használd az Option Compare utasítást, vagy a compare paramétert: instr(1, folder.Name, "DATA", 1).

Csak név eleji egyezés + kis/nagybetű nem számít:

Function GetRecentDATAFolder(path)

  Dim fso, folder

  Set fso = CreateObject("Scripting.FileSystemObject")
  Set GetRecentDATAFolder = Nothing

  For Each folder In fso.GetFolder(path).SubFolders
    If InStr(1, folder.Name, "DATA", 1) = 1 Then
      If GetRecentDATAFolder Is Nothing  Then
        Set GetRecentDATAFolder = folder
      ElseIf folder.DateLastModified > GetRecentDATAFolder.DateLastModified Then
        Set GetRecentDATAFolder = folder
      End If
    End If
  Next

End Function

(Nálam jelenleg elég hanyag a HUP vbscript-formázása.)

:)

Olyan scriptet szeretnék még létrehozni ami egy adott szerveren megnézi a belépett usereket, kiírja aki bevan jelentkezve.

Eddig ezt találtam de nem működik.

Így néz ki a script:

strComputer = "."  

Set objWMI = GetObject("winmgmts:" _ 
              & "{impersonationLevel=impersonate}!\\" _ 
              & strComputer & "\root\cimv2") 

Set colSessions = objWMI.ExecQuery _ 
    ("Select * from Win32_LogonSession Where LogonType = 10") 

If colSessions.Count = 0 Then 
   Wscript.Echo "No interactive users found" 
Else 
   WScript.Echo "RDP Sessions:"
   For Each objSession in colSessions 

     Set colList = objWMI.ExecQuery("Associators of " _ 
         & "{Win32_LogonSession.LogonId=" & objSession.LogonId & "} " _ 
         & "Where AssocClass=Win32_LoggedOnUser Role=Dependent" ) 
     For Each objItem in colList 
       WScript.Echo "Username: " & objItem.Name & " FullName: " & objItem.FullName 
     Next 
   Next 
End If

valakinek van ötlete, hogy mi leheta probléma?