Jump to content

batch Datei unter WinXP


urkrossi

Empfohlene Beiträge

@All

 

Ich benötige Hilfe bei Programierung einer Batch Datei unter Windows XP.

 

1. Diese soll prüfen ob ein Netzlaufwerk verbunden ist und wenn dies erfolgreich war ein Programm öffnen.

2. Sollte das Netzlaufwerk nicht verbunden sein dieses verbinden und das Programm öffnen.

 

1. und 2. funzen soweit siehe Quelltext.

 

3. Das Fenster der Eingabeaufforderung soll nicht sichtbar sein bzw. nach Ablauf geschlossen werden!! (besser ersteres)

4. Ist das Netzlaufwerk nicht eingeschaltet bzw. nicht auffindbar ein Fehlermeldung ausgeben z.B.:

"Netzlaufwerk nicht eingeschaltet" oder ähnlich.

 

 

Ich Danke euch im Vorraus

 

Gruß urkrossi

 

Edit: Quelltext

 

@ECHO OFF
CLS
:START
IF NOT EXIST K: goto noK
goto ende
:noK
ping -n 1 Fnd >NUL
if "%errorlevel%"=="0" NET USE K: \\Fnd\AVDaten
ping -n 5 localhost>NUL
IF EXIST K: goto ende
rem ping -n 5 localhost>NUL
rem GOTO START
:ende
C:\Programme\Aktenverwaltung\Aktenverwaltung.exe

Link zu diesem Kommentar
Auf anderen Seiten teilen

@All

 

Ich benötige Hilfe bei Programierung einer Batch Datei unter Windows XP.

 

1. Diese soll prüfen ob ein Netzlaufwerk verbunden ist und wenn dies erfolgreich war ein Programm öffnen.

2. Sollte das Netzlaufwerk nicht verbunden sein dieses verbinden und das Programm öffnen.

 

1. und 2. funzen soweit siehe Quelltext.

 

3. Das Fenster der Eingabeaufforderung soll nicht sichtbar sein bzw. nach Ablauf geschlossen werden!! (besser ersteres)

4. Ist das Netzlaufwerk nicht eingeschaltet bzw. nicht auffindbar ein Fehlermeldung ausgeben z.B.:

"Netzlaufwerk nicht eingeschaltet" oder ähnlich.

 

 

Ich Danke euch im Vorraus

 

Gruß urkrossi

 

Edit: Quelltext

 

@ECHO OFF
CLS
:START
IF NOT EXIST K: goto noK
goto ende
:noK
ping -n 1 Fnd >NUL
if "%errorlevel%"=="0" NET USE K: \\Fnd\AVDaten
ping -n 5 localhost>NUL
IF EXIST K: goto ende
rem ping -n 5 localhost>NUL
rem GOTO START
:ende
C:\Programme\Aktenverwaltung\Aktenverwaltung.exe

 

Moin...

 

Ich hatte das Problem auch schon mal und hab mit den GPOs unter Windows experimentiert. Bringt aber nicht wirklich was. Was aber ganz gut funktioniert ist das hidden32 Tool.

 

http://www.tutorials.de/forum/microsoft-wi...ausblenden.html

 

Dann kannst du deine Batch folgendermassen aufrufen:

 

start hidden32 example.bat

Link zu diesem Kommentar
Auf anderen Seiten teilen

@DrHouse77

 

Antivir meldet mir

 

In der Datei 'N:\hidden32\hidden32.exe'

wurde ein Virus oder unerwünschtes Programm 'SPR/HideWindow' [riskware] gefunden.

Ausgeführte Aktion: Datei löschen

 

@amdinside

 

Gibts dafür eine Anleitung?

Hab davon nicht alt so viel Ahnung hab die batch auch nur gefunden und angepasst.

 

urkrossi

Link zu diesem Kommentar
Auf anderen Seiten teilen

@DrHouse77

 

Antivir meldet mir

 

 

 

@amdinside

 

Gibts dafür eine Anleitung?

Hab davon nicht alt so viel Ahnung hab die batch auch nur gefunden und angepasst.

 

urkrossi

 

Servus...

 

hmm... OfficeScan meldet das nicht... Na ja.. geht aber auch anders. VBScript ist hier ein sehr probates Mittel. Vorausgesetzt der Windows Scripting Host ist installiert. Sollte aber ab XP bzw. Win 2003 Server und aufwärts standardmässig dabei sein.

 

Kopier mal folgenden Text in einen Editor (z.B. Notepad und speicher das Ganze mit der Dateiendung .vbs)

 

Set WshShell = CreateObject("WScript.Shell")

WshShell.Run chr(34) & "C:\example.bat" & Chr(34), 0

Set WshShell = Nothing

 

 

Damit wir über den Parameter 0 eine nicht sichtbare Shell geöffnet, die dein Batch ausführt.

Ausserdem hast du dann auch die Möglichkeit eine MsgBox auszugeben, da VBScript.

 

Bei Fragen fragen... :huh:

Link zu diesem Kommentar
Auf anderen Seiten teilen

@amdinside

 

Danke das wär nett.

 

@DrHouse77

 

Das funzt schon mal mit dem versteckten ausführen der *.bat.

Kann man das auch komplett in vbs ausführen? Also ohne die bat Datei!

 

Und zusätzlich noch eine Meldung ausgeben wenn das Netzlaufwerk

nicht verbunden werden kann. (z.B. wenn es ausgeschaltet ist)

 

 

Gruß urkrossi

Link zu diesem Kommentar
Auf anderen Seiten teilen

@amdinside

 

Danke das wär nett.

 

@DrHouse77

 

Das funzt schon mal mit dem versteckten ausführen der *.bat.

Kann man das auch komplett in vbs ausführen? Also ohne die bat Datei!

 

Und zusätzlich noch eine Meldung ausgeben wenn das Netzlaufwerk

nicht verbunden werden kann. (z.B. wenn es ausgeschaltet ist)

 

 

Gruß urkrossi

 

Ja... Geht auch... Hier mal der fertige Inhalt der .vbs

 

'-----------------------------------------------------------------------------

 

On Error Resume next

 

Dim fileSys

Dim objRet

Dim objNet

 

'Zuweisen zum Scripting.FileSystemObject

 

Set filesys = CreateObject("Scripting.FileSystemObject")

 

'Prüfen ob K: schon existiert

 

If not filesys.DriveExists("K:") Then

Set objNet = CreateObject("WScript.Network")

objNet.MapNetworkDrive "K:" , "\\Fnd\AVDatene"

End If

 

'Nochmals prüfen ob Verbindung erfolgreich

 

If not filesys.DriveExists("K:") Then

objRet = Msgbox("Laufwerk K: existiert nicht und konnte auch nicht verbunden werden")

End if

 

Set filesys = Nothing

Set objNet = Nothing

 

'---------------------------------------------------------------------------------------------------------

 

Sollte soweit funktionieren

Link zu diesem Kommentar
Auf anderen Seiten teilen

@DrHouse77

 

Aber fehlt da nicht noch der Aufruf zum Start des Programms?

 

Edit: Hab jetzt mal die zeilen aus deinem anderen Post eingefügt.

 

Dann startet auch das Programm nach dem das Netzlaufwerk verbunden wurde.

 

Ist aber das Laufwerk ausgeschaltet erscheint die Fehlermeldung vom Programm

das der Pfad nicht gefunden wurde und nicht die Meldung:

"Laufwerk K: existiert nicht und konnte auch nicht verbunden werden".

 

On Error Resume next

Dim fileSys
Dim objRet
Dim objNet

'Zuweisen zum Scripting.FileSystemObject

Set filesys = CreateObject("Scripting.FileSystemObject")

'Prüfen ob K: schon existiert

If not filesys.DriveExists("K:") Then 
Set objNet = CreateObject("WScript.Network")
objNet.MapNetworkDrive "K:" , "\\Fnd\AVDaten"
End If

'Nochmals prüfen ob Verbindung erfolgreich

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Programme\Aktenverwaltung\Aktenverwaltung.exe" & Chr(34), 0
Set WshShell = Nothing

If not filesys.DriveExists("K:") Then
objRet = Msgbox("Laufwerk K: existiert nicht und konnte auch nicht verbunden werden")
End if

Set filesys = Nothing
Set objNet = Nothing

 

urkrossi

Link zu diesem Kommentar
Auf anderen Seiten teilen

@DrHouse77

 

Aber fehlt da nicht noch der Aufruf zum Start des Programms?

 

Edit: Hab jetzt mal die zeilen aus deinem anderen Post eingefügt.

 

Dann startet auch das Programm nach dem das Netzlaufwerk verbunden wurde.

 

Ist aber das Laufwerk ausgeschaltet erscheint die Fehlermeldung vom Programm

das der Pfad nicht gefunden wurde und nicht die Meldung:

"Laufwerk K: existiert nicht und konnte auch nicht verbunden werden".

 

On Error Resume next

Dim fileSys
Dim objRet
Dim objNet

'Zuweisen zum Scripting.FileSystemObject

Set filesys = CreateObject("Scripting.FileSystemObject")

'Prüfen ob K: schon existiert

If not filesys.DriveExists("K:") Then 
Set objNet = CreateObject("WScript.Network")
objNet.MapNetworkDrive "K:" , "\\Fnd\AVDaten"
End If

'Nochmals prüfen ob Verbindung erfolgreich

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Programme\Aktenverwaltung\Aktenverwaltung.exe" & Chr(34), 0
Set WshShell = Nothing

If not filesys.DriveExists("K:") Then
objRet = Msgbox("Laufwerk K: existiert nicht und konnte auch nicht verbunden werden")
End if

Set filesys = Nothing
Set objNet = Nothing

 

urkrossi

 

 

Jepp, da hast du Recht. Asche auf mein Haupt... Ich geh mal davon aus, du möchstest das Programm nur starten wenn das Laufwerk da ist. Das sieht dann so aus:

 

'-----------------------------------------------------------------------------

 

On Error Resume next

 

Dim fileSys

Dim objRet

Dim objNet

Dim objShell

Dim objBin

 

'Zuweisen zum Scripting.FileSystemObject

 

Set filesys = CreateObject("Scripting.FileSystemObject")

 

'Prüfen ob K: schon existiert

 

If not filesys.DriveExists("K:") Then

Set objNet = CreateObject("WScript.Network")

objNet.MapNetworkDrive "K:" , "\\Fnd\AVDatene"

End If

 

'Nochmals prüfen ob Verbindung erfolgreich

 

If not filesys.DriveExists("K:") Then

objRet = Msgbox("Laufwerk K: existiert nicht und konnte auch nicht verbunden werden")

Else

Set objShell = WScript.CreateObject("WScript.Shell")

Set objBin = objShell.run("C:\Programme\Aktenverwaltung\Aktenverwaltung.exe")

End if

 

Set filesys = Nothing

Set objNet = Nothing

 

'---------------------------------------------------------------------------------------------------------

Link zu diesem Kommentar
Auf anderen Seiten teilen

So das Programm startet wenn das Laufwerk verbunden wurde.

Aber wenn es nicht verfügbar ist kommt immer noch die Fehlermeldung

von der Aktenverwaltung und nicht wie gewünscht:

"Laufwerk K: existiert nicht und konnte auch nicht verbunden werden".

 

urkrossi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habs gerade noch mal angepasst. Jetzt wird das Laufwerk erstmal getrennt wenns vorhanden ist und dann neu verbunden. Ist zwar ziemlich braun, sollte aber funktionieren:

 

'-----------------------------------------------------------------------------

 

On Error Resume next

 

Dim fileSys

Dim objRet

Dim objNet

Dim objShell

Dim objBin

 

'Zuweisen zum Scripting.FileSystemObject

 

Set filesys = CreateObject("Scripting.FileSystemObject")

 

'Prüfen ob K: schon existiert

 

If not filesys.DriveExists("K:") Then

Set objNet = CreateObject("WScript.Network")

objNet.MapNetworkDrive "K:" , "\\Fnd\AVDatene"

Else

Set objNet = CreateObject("WScript.Network")

objNet.RemoveNetworkDrive "K:", True, True

objNet.MapNetworkDrive "K:" , "\\Fnd\AVDatene"

End If

 

'Nochmals prüfen ob Verbindung erfolgreich

 

If not filesys.DriveExists("K:") Then

objRet = Msgbox("Laufwerk K: existiert nicht und konnte auch nicht verbunden werden")

Else

Set objShell = WScript.CreateObject("WScript.Shell")

Set objBin = objShell.run("C:\Programme\Aktenverwaltung\Aktenverwaltung.exe")

End if

 

Set filesys = Nothing

Set objNet = Nothing

 

'---------------------------------------------------------------------------------------------------------

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nach einem Neustart wird die Meldung richtig angezeigt.

Hab das Laufwerk immer nur ausgeschaltet und die vbs neu ausgeführt. :huh:

 

Mit der braunen Funktion ;) ist vielleicht nicht verkehrt, wenn das Programm neu

gestartet wird und das Laufwerk in Standby gegangen ist.

 

 

Ich danke dir erstmal für deine Super Hilfe.

 

urkrossi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nach einem Neustart wird die Meldung richtig angezeigt.

Hab das Laufwerk immer nur ausgeschaltet und die vbs neu ausgeführt. :huh:

 

Mit der braunen Funktion ;) ist vielleicht nicht verkehrt, wenn das Programm neu

gestartet wird und das Laufwerk in Standby gegangen ist.

 

 

Ich danke dir erstmal für deine Super Hilfe.

 

urkrossi

 

Kein Thema.... sodele, werd jetzt mal langsam den Schlaf der gerechten schlafen.... bis denne mal...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja geh ruhig schlafen will dich nicht um den wohl verdienten bringen.

 

Kurzes Testergebnis noch, es werden jetzt beide Fehlermeldungen angezeigt

wenn die Verbindung verlorengegangen ist.

 

Edit: Nach mehrmaligem Testen erscheint nur noch die gewünschte Fehlermeldung.

 

 

urkrossi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.
×
×
  • Neu erstellen...