halunke
Goto Top

Abfragescript vor Programmstart....

Hallo @ all,

also ich bin kein Coder das schonmal vorweg.....

als ich drehe hier durch da sitze ich schon zwei Wochen an diesem Script und es funzt auch zur Hälfte aber halt nur zur Hälfte.
Ich hoffe das Ihr mir weiterhelfen könnt.

Das Script sol folgendes machen:

1. einen Warnhinweis ausgeben wenn ich das will. -> das funzt
2. den Ordner Temp\pvv und Unterordner abfragen ob noch dateien Vorhanden sind ausser Dateien mit der Endung (*log und *.tmp) die sollten Ignoriert werden
Wenn Nein das Programm pvv.exe Starten. -> das funzt
Wenn Ja sollen die Dateien mit Pfadangabe (auch wieder ohne .log und *.temp) aufgelistet werden die Vorhanden sind.
Eine Messagebox mit OK oder Abrechen bei Abrechen soll die pvv.exe starten
Bei OK soll die pvv.exe Starten.

Ich hoffe da kann mir jemand weiter helfen?


Dim fso
	Set fso = CreateObject("Scripting.FileSystemObject")  
	If fso.FileExists("\\192.168.1.10\Wartungsmeldung\hinweis.txt") then  
	sInfoText = "\\192.168.1.10\Share\Wartungsmeldung\hinweis.txt"  
	sTitel = "Hinweis !!!"  
	iSek = 120 'Anzeigedauer in Sekunden  
	Set WshShell = WScript.CreateObject("WScript.Shell")  
	Set fso = CreateObject("Scripting.FileSystemObject")  
	sText = fso.OpenTextFile(sInfoText, 1).ReadAll
	WshShell.Popup sText, iSek, sTitel, vbInformation
	Else
	End if
    Set fso = nothing
	Set wshell = CreateObject("WScript.Shell")  
	temp = wshell.ExpandEnvironmentStrings("%TEMP%")  
	Set oFSO = CreateObject("Scripting.FileSystemObject")  
	If Not oFSO.FolderExists(temp & "\pvv\") Then  
	Set objFolder = oFSO.CreateFolder(temp & "\pvv\")  
	End If 
		Set objFSO = CreateObject("Scripting.FileSystemObject")   
		objStartFolder = (temp & "\pvv\")  
 		Set objFolder = objFSO.GetFolder(objStartFolder)
		Set colFiles = objFolder.Files 
		ShowSubfolders objFSO.GetFolder(objStartFolder)
			For Each objFile in colFiles
	    		If UCase(objFSO.GetExtensionName(objFile.name)) = "TXT" Then  
	    			a = MsgBox("Es sind noch Daten in einem Verzeichnis vorhanden. " ,vbOKCancel + vbExclamation, "ACHTUNG ! ")     
				If a = vbCancel Then
					Wscript.Echo "Es sind Daten im folgendem Verzeichnis vorhanden\                                   " & objFolder.Path &"\"& objFile.Name   
					Set ShellWSH = CreateObject("WScript.Shell")  
					ShellWSH.Run (temp &"\pvv\"), 1, False  
					WScript.Quit
				End If
				If a = vbOK Then

				End If
			End If
		Next

    Dim WshShell
	Dim Quelle
	Dim Ziel1,Ziel2
	Dim HOST_NAME,HOST_NAME_file
	Dim WD_DEF
	Set WSHShell = WScript.CreateObject("WScript.Shell")  
	Set fs = CreateObject("Scripting.FileSystemObject")  
	Set objNetwork = CreateObject("WScript.Network")  



	Argument = "\\192.168.1.10\share\pvv.exe"  

	WSHShell.Run Argument, 1, False

	Set WSHShell = Nothing
	WScript.Quit(0)

Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
        Set objFolder = objFSO.GetFolder(Subfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
        	If UCase(objFSO.GetExtensionName(objFile.name)) = "TXT" Then  
	    		a = MsgBox("Es sind noch Daten in einem Verzeichnis vorhanden." ,vbOKCancel + vbExclamation, "ACHTUNG ! ")     
			If a = vbCancel Then
				Wscript.Echo "Es sind Daten im folgendem Verzeichnis vorhanden\                                   " & objFolder.Path &"\"& objFile.Name   
				Set ShellWSH = CreateObject("WScript.Shell")  
				ShellWSH.Run (temp &"\pvv\"), 1, False  
				WScript.Quit
			End If
			If a = vbOK Then

			End If
		End If
        Next
        ShowSubFolders Subfolder
    Next
End Sub

Content-Key: 165703

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

Printed on: April 25, 2024 at 11:04 o'clock

Member: TsukiSan
TsukiSan May 05, 2011 at 13:34:51 (UTC)
Goto Top
hallo halunke,

verstehe mich nicht falsch! Aber nach deiner Beschreibung liegt dein primäres Augenmerk auf dem Starten der pw.exe
Da reicht ein Zweiteiler in VBS:
set wshshell=createobject("wscript.shell")  
wshshell.run(pw.exe), 3, true

Jetzt mal Spass beiseite!
Zum Durchkämmen von Ordnern geht doch eventuell sowas:
Ordner = "C:\Temp\  

ListOrdner Ordner

Sub ListOrdner(ordner)
	Set ordner = fs.getfolder(ordner)
	For Each file In ordner.files
		Pfadangabe =file.path

	Next

	For Each Unterordner In Ordner.subfolders
		Listordner unterordner
	next
End Sub
Und dann an entsprechender Stelle noch die Dateiendungen filtern. Z.Bsp.:
If Not Right(Pfadangabe,3) = "log" and Not Right(Pfadangabe,3) = "tmp" then  
      ' Anweisung etc.  
End IF

Dann musst du nur noch entscheiden, ob bei deiner Ent-Oder-Weder-Abfrage was gestartet oder gestoppt werden soll.

Gruss
Tsuki
Member: halunke
halunke May 06, 2011 at 07:46:42 (UTC)
Goto Top
Erstmal besten Dank für deine Infos. Eine frage hätte ich noch was bedeutet die ,3 -> (Pfadangabe,3) ?

mfg
halunke
Member: TsukiSan
TsukiSan May 06, 2011 at 12:46:03 (UTC)
Goto Top
Hi

was bedeutet die ,3 -> (Pfadangabe,3)
Es bedeutet die Abfrage der 3 Stellen (Buchstaben oder Zahlen) von rechts nach links gezählt.

Beispiel:
Deine Datei heißt Test.tmp , dann sind die letzten 3 Stellen rechts "tmp".
Somit kann man z.Bsp. die Dateiendungen rausfiltern.

teste einfach mal in VBS:
temp = "Mein Name"  
msgbox Right(temp,4)

Das gleiche geht übrigens auch mit links LEFT
temp = "Mein Name"  
msgbox Left(temp,4)

Gruss
Tsuki