henner2
Goto Top

Letzten Dateizugriff feststellen?

Dieser Thread bezieht sich auf / Letzten Dateizugriff feststellen?
Der Thread wurde damals geschlossen aufgrund der Problemlösung.

Fragen:
grün=gelöst rot=ungelöst

1) -Wie kann dieses Script unter Windows7 zum Laufen gebracht werden?
2) -Wie können zusätzlich die Eigenschaften Size und Length (Dauer von Musikdateien) durch das Script abgefragt werden?
3) -Wie können das Erstelldatum und die zugehörige Uhrzeit der ChkFileProperties.txt in das Script eingefügt werden?
4) -Wie kann bei weiterem Aufruf der ChkFileProperties.vbs die Ausgabe an ChkFileProperties.txt angehängt werden statt überschrieben werden?


zu 1)
Unter Win7 wird dieses Script nicht mehr richtig ausgeführt:

-die .txt Datei wird nicht erstellt.

-nach dem Dialog "Fertig" kommt die Frage, ob eine neue CheckFileProperties.txt Datei erstellt werden soll:
die Bejahung führt zur Erstellung einer leeren Datei,
die Verneinung führt zu nichts.


Lösung 1):
siehe @emeriks' Beitrag:
in der cmd eingeben:
wscript.exe "[Pfad]"
oder
als Verknüpfung:
Desktop -> Rechtsklick -> Verknpüpfung erstellen -> wscript.exe eingeben, weiter klicken, Name eingeben, Fertigstellen
-> Rechtsklick auf Verknüpfung -> Eigenschaften -> Verknüpfung -> Ziel: -> C:\Windows\System32\wscript.exe "[Pfad]"


Lösung 2):
siehe @colinardo's Beiträge
zu Size:
-das Originalscript wurde erweitert
zu Length (Dauer):
-das Script wurde großteils geändert


Lösung 3):
siehe @colinardo's Beitrag
-das Originalscript wurde erweitert


Lösung 4):
siehe @colinardo's Beitrag:
-Zeile 14 wurde geändert zu
Set objLog = objFSO.OpenTextFile(strLog,8,True)


' ChkFileProperties.vbs  

Option Explicit 
On Error Resume Next 

Dim objFSO, objFolder, objSubFld, objLog, f1, f2, colFiles, strMSG, strStart, strLog, i 

strStart = InputBox("Wo solls denn losgehen?","Check4FileProperties")   
strMSG = "Startverzeichnis: " & strStart & vbCrLf & "~~~~~~~~~~~~~~~~~~~~~~~~~~~"   
strLog = "c:\CheckFileProperties.txt"   
Set objFSO = CreateObject("Scripting.FileSystemObject")   
Set objFolder = objFSO.GetFolder(strStart) 

ChkSubFld objFolder 

Private Sub ChkSubFld(StartFolder) 
ChkFiles StartFolder 
Set objSubFld = StartFolder.SubFolders 
For Each f2 in objSubFld 
ChkSubFld f2 
Next 
End Sub 

Private Sub ChkFiles(Start) 
Set colFiles = Start.Files 

For Each f1 in colFiles 
strMSG = strMSG & vbCrLf & objFSO.GetAbsolutePathName(f1) & vbCrLf
strMSG = strMSG & vbTab & "Erstellt: " & f1.DateCreated & vbCrLf  
strMSG = strMSG & vbTab & "Letzter Zugriff: " & f1.DateLastAccessed & vbCrLf  
strMSG = strMSG & vbTab & "Letzte Änderung: " & f1.DateLastModified  
Next 
End Sub 

Set objLog = objFSO.CreateTextFile(strLog, True) 
objLog.Write strMSG 
objLog.Close 

MsgBox "Fertig!"   
LoadFile strLog 

Private Sub LoadFile(File) 
Dim objShell, strApplication 
strApplication = "notepad.exe"   
Set objShell = CreateObject("WScript.Shell")   
objShell.Run strApplication & " " & File   
set objShell = Nothing 
End Sub

Content-Key: 243971

Url: https://administrator.de/contentid/243971

Printed on: April 19, 2024 at 16:04 o'clock

Member: emeriks
Solution emeriks Jul 17, 2014 updated at 16:47:26 (UTC)
Goto Top
Hi,
schon mal "Als Administrator ausführen" versucht?
z.B. "Eingabeaufforderung" über Kontextmenü "Als Administrator ausführen" und dann von dort die VBS starten.
Oder eine Verknüpfung auf dem Desktop erstellen für "wscript.exe" mit Parameter diese VBS und dann "Als Administrator ausführen".

E.
Member: Henner2
Henner2 Jul 17, 2014 updated at 17:53:17 (UTC)
Goto Top
Hi, emeriks.
Danke für Lösung 1).
Member: colinardo
Solution colinardo Jul 17, 2014 updated at 18:00:06 (UTC)
Goto Top
Moin,
zu Punkt 2 und 3:
Wie können zusätzlich die Eigenschaften Size und Length durch das Script abgefragt werden?
Size ist klar (Dateigröße), aber was meinst du mit Length ?
' ChkFileProperties.vbs  

Option Explicit 
On Error Resume Next 

Dim objFSO, objFolder, objSubFld, objLog, f1, f2, colFiles, strMSG, strStart, strLog, i 

strStart = InputBox("Wo solls denn losgehen?","Check4FileProperties")   
strMSG = "Startverzeichnis: " & strStart & vbCrLf & "~~~~~~~~~~~~~~~~~~~~~~~~~~~"   
strLog = "c:\CheckFileProperties.txt"   
Set objFSO = CreateObject("Scripting.FileSystemObject")   
Set objFolder = objFSO.GetFolder(strStart) 

ChkSubFld objFolder 

Private Sub ChkSubFld(StartFolder) 
ChkFiles StartFolder 
Set objSubFld = StartFolder.SubFolders 
For Each f2 in objSubFld 
ChkSubFld f2 
Next 
End Sub 

Private Sub ChkFiles(Start) 
Set colFiles = Start.Files 

For Each f1 in colFiles 
strMSG = strMSG & vbCrLf & objFSO.GetAbsolutePathName(f1) & vbCrLf
strMSG = strMSG & vbTab & "Erstellt: " & f1.DateCreated & vbCrLf  
strMSG = strMSG & vbTab & "Letzter Zugriff: " & f1.DateLastAccessed & vbCrLf  
strMSG = strMSG & vbTab & "Letzte Änderung: " & f1.DateLastModified & vbCrLf  
strMSG = strMSG & vbTab & "Dateigröße (bytes): " & f1.Size  
Next 
End Sub 

Set objLog = objFSO.CreateTextFile(strLog, True) 
objLog.WriteLine "Datei wurde erstellt am : " & Now()  
objLog.WriteLine "---------------------------------------"  
objLog.Write strMSG 
objLog.Close 

MsgBox "Fertig!"   
LoadFile strLog 

Private Sub LoadFile(File) 
Dim objShell, strApplication 
strApplication = "notepad.exe"   
Set objShell = CreateObject("WScript.Shell")   
objShell.Run strApplication & " " & File   
set objShell = Nothing 
End Sub
Grüße Uwe
Member: Henner2
Henner2 Jul 17, 2014 updated at 18:49:36 (UTC)
Goto Top
Hi, Uwe.
Danke für Teillösung 2) und Lösung 3).

Mit Length soll die Spieldauer von Audiodateien gemeint sein.
Member: colinardo
Solution colinardo Jul 17, 2014 updated at 19:30:43 (UTC)
Goto Top
Fügt die Länge einer Musikdatei hinzu falls die Eigenschaft bei der Datei vorhanden ist und von Windows ausgelesen werden kann.
' ChkFileProperties.vbs  

On Error Resume Next 

Dim objFSO, objShell, objLog, nsFolder, f1, strMSG, strStart, strLog, nsFile, strLaenge
strStart = InputBox("Wo solls denn losgehen?","Check4FileProperties")   
strMSG = "Startverzeichnis: " & strStart & vbCrLf & "~~~~~~~~~~~~~~~~~~~~~~~~~~~"   
strLog = "c:\CheckFileProperties.txt"   
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objShell = CreateObject("Shell.Application")  

If objFSO.FolderExists(strStart) Then
       parseFolders objFSO.GetFolder(strStart), True
       Set objLog = objFSO.CreateTextFile(strLog, True) 
       objLog.WriteLine "Datei wurde erstellt am : " & Now()  
       objLog.WriteLine "~~~~~~~~~~~~~~~~~~~~~~~~~~~"  
       objLog.Write strMSG 
       objLog.Close
       MsgBox "Fertig!"   
       LoadFile strLog 
Else
	MsgBox "Der angegebene Ordner existiert nicht! Abbruch.",vbCritical  
End If

Function parseFolders(objFldr,boolRecursion)
	Set nsFolder = objShell.NameSpace(objFldr.Path)
	For Each f1 In objFldr.Files
		strMSG = strMSG & vbCrLf & f1.Path & vbCrLf
		strMSG = strMSG & vbTab & "Erstellt: " & f1.DateCreated & vbCrLf  
		strMSG = strMSG & vbTab & "Letzter Zugriff: " & f1.DateLastAccessed & vbCrLf  
		strMSG = strMSG & vbTab & "Letzte Änderung: " & f1.DateLastModified & vbCrLf  
		strMSG = strMSG & vbTab & "Dateigröße (bytes): " & f1.Size & vbCrLf  
		Set nsFile = nsFolder.ParseName(f1.Name)
		If Not nsFile Is Nothing Then
			strLaenge = nsFolder.GetDetailsOf(nsFile,27)
			If strLaenge <> "" Then  
				strMSG = strMSG & vbTab & "Länge (Dauer): " & strLaenge & vbCrLf  
			End If
		End If
	Next 
	If boolRecursion Then
		For Each subFolder in objFldr.SubFolders
			parseFolders subFolder, True
		Next
	End If
End Function

Private Sub LoadFile(File) 
	Dim objShell, strApplication 
	strApplication = "notepad.exe"   
	Set objShell = CreateObject("WScript.Shell")   
	objShell.Run strApplication & " " & File   
	set objShell = Nothing 
End Sub
Grüße Uwe
Member: Henner2
Henner2 Jul 17, 2014 at 19:28:56 (UTC)
Goto Top
Danke für Lösung 2) und für ein neues Script mit Stop bei nicht vorhandenem Ordner.
Member: colinardo
Solution colinardo Jul 18, 2014 updated at 08:26:07 (UTC)
Goto Top
4) -Wie kann bei weiterem Aufruf der ChkFileProperties.vbs die Ausgabe an ChkFileProperties.txt angehängt werden statt überschrieben werden?
da hast du Glück das ich hier nochmal reinschaue. Du änderst ja dauernd was face-sad

Zeile 14 so abändern ...
Set objLog = objFSO.OpenTextFile(strLog,8,True)
Thema gegessen ...

Wenns das dann endgültig war, den Beitrag bitte noch auf gelöst setzen. Merci.
Member: falscher-sperrstatus
falscher-sperrstatus Jul 18, 2014 at 08:10:47 (UTC)
Goto Top
Warum ist das Thema eigentlich unter "Firewall"?
Member: colinardo
colinardo Jul 18, 2014 updated at 08:14:07 (UTC)
Goto Top
Zitat von @falscher-sperrstatus:
Warum ist das Thema eigentlich unter "Firewall"?
stimmt fällt mir gerade auch auf face-smile, total verpeilt ....

aber der TO ändert ja sowieso alle 10 Minuten was an seinem Beitrag, ... und das noch in Farbe face-big-smile
Member: falscher-sperrstatus
falscher-sperrstatus Jul 18, 2014 at 08:16:21 (UTC)
Goto Top
Zitat von @colinardo:

> Zitat von @falscher-sperrstatus:
> Warum ist das Thema eigentlich unter "Firewall"?
stimmt fällt mir gerade auch auf face-smile, total verpeilt ....

aber der TO ändert ja sowieso alle 10 Minuten was an seinem Beitrag, ... und das noch in Farbe face-big-smile

Könnte das Projektmanagment 3.0 werden:

Löse die Probleme mit minimalstem Kostenaufwand, aber immerhin bekommt ihr Farbe.
Member: colinardo
colinardo Jul 18, 2014 updated at 08:18:52 (UTC)
Goto Top
Zitat von @falscher-sperrstatus:
Könnte das Projektmanagment 3.0 werden:
Löse die Probleme mit minimalstem Kostenaufwand, aber immerhin bekommt ihr Farbe.
dito, wieder ein User mehr auf meiner Sperrliste face-wink