Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch Datei startet VBS mit Fehler

Frage Entwicklung Batch & Shell

Mitglied: Marja

Marja (Level 1) - Jetzt verbinden

28.02.2006, aktualisiert 12.06.2007, 7542 Aufrufe, 11 Kommentare

Hallo zusammen

seit kurzem, so wie es aussieht wurde auf unseren Firmen Netzwerk PC der Service Pack 2 bei Windows Professional bzw. auch bei Access habe ich schon Service Pack 2 bei den Infos gelesen.

Ich hatte bisher eine Batch Datei die eine VBS Datei gestartet hatte.

01.
::mitarbeiter.bat 
02.
@echo off 
03.
 
04.
if not exist F:\Desktop mkdir f:\Desktop 
05.
 
06.
echo Es wird nun ?berprft ob eine neue Version existiert! 
07.
echo ... 
08.
echo Bitte warten Sie ! Das Mitarbeitertool wird gleich gestartet! 
09.
echo ... 
10.
  
11.
 
12.
copy G:\FM\Access\xxx\MitarbeiterTool\Desktop\Mitarbeitertool.lnk F:\Desktop/d 
13.
 
14.
if not exist C:\Temp\%username%\Mitarbeitertool mkdir C:\Temp\%username%\Mitarbeitertool 
15.
 
16.
 
17.
replace G:\FM\Access\xxx\MitarbeiterTool\Desktop\Mitarbeitertool.mde C:\Temp\%username%\Mitarbeitertool/a 
18.
replace G:\FM\Access\xxx\MitarbeiterTool\Desktop\Mitarbeitertool.mde C:\Temp\%username%\Mitarbeitertool/u  
19.
 
20.
replace G:\FM\Access\xxx\MitarbeiterTool\Desktop\Mitarbeitertool.vbs C:\Temp\%username%\Mitarbeitertool/a 
21.
replace G:\FM\Access\xxx\MitarbeiterTool\Desktop\Mitarbeitertool.vbs C:\Temp\%username%\Mitarbeitertool/u  
22.
 
23.
 
24.
C:\Temp\%username%\Mitarbeitertool\Mitarbeitertool.vbs
So und nun die Mitarbeitertool.vbs
01.
Option Explicit 
02.
 
03.
Const acCmdAppMaximize = 10  
04.
 
05.
dim link 
06.
dim wshnetwork 
07.
dim wshshell 
08.
dim ingret 
09.
 
10.
Set WshNetwork = WScript.CreateObject("WScript.Network") 
11.
Link = "C:\Temp\" &WshNetwork.UserName & "\Mitarbeitertool\Mitarbeitertool.mde"  
12.
 
13.
Set WSHShell = WScript.CreateObject("Access.Application")  
14.
 
15.
       
16.
      WSHShell.automationsecurity=1 ' low. 
17.
      WSHShell.OpenCurrentDatabase Link 
18.
      WSHShell.visible=true 
19.
      WSHShell.RunCommand acCmdAppMaximize  
20.
      WSHShell.docmd.Maximize 
21.
      WSHShell.usercontrol=true

Bei dieser VBS Datei kommt es seit dem Einspielung der Service Packs (vermutlich) zu einem Fehler in der Zeile 17. Komischerweise nicht bei jedem PC, aber bei der Mehrheit.

Zeile 17: WSHShell.OpenCurrentDatabase Link

Die VBS war damals dafür gedacht das die meheren Abfragen bevor die Access Anwendung gestartet wird umgangen wurden, damit der Mitarbeiter nicht verwirrt werden was sie nun drücken sollte, ob unsichere Ausdrücke blockieren oder nicht etc.

Wenn man in der Bat Datei statt der vbs die mde startet ist es ja auch o.k. aber dann bleibt das Dos Fenster auf und das verwirrt wieder.

Kann mir jemand helfen ?

Marja
Mitglied: Biber
28.02.2006 um 17:30 Uhr
Moin Marja,

ich lese mir das nun auch zum dritten Mal durch, ohne eine richtig wahrscheinliche Erklärung für dieses Phänomen zu finden.
Ich denke, die ganz unwahrscheinlichen Gründe hast Du bestimmt schon selbst überprüft und ausgeschlossen (Leerzeichen im %username%; Fehlendes laufwerk F: ; keine Rechter auf C:\temp\; kein WSH/VBS installiert oder nicht erlaubt;...)

Hast Du denn
a) mal den inhalt von "Link" anzeigen lassen? Kommt da noch ein plausibler String raus?
b) was sagt denn in Fehlermeldung in Zeile 19 außer "Fehler"?

Gruß
Biber
Bitte warten ..
Mitglied: maneich
01.03.2006 um 01:36 Uhr
Hallo,

mir geht es genau so wie Biber.

Aber für den Übergang, bis das VBS wieder fehlerfrei läuft folgendes:

setze hinter die letzte Zeile der BAT ein eof oder ein exit oder auch ein cls.

Mit freundlichen Grüßen maneich
Bitte warten ..
Mitglied: Marja
01.03.2006 um 09:01 Uhr
Vielen Dank für eure Antworten

Also komischerweise egal an welchen PC ich mich anmelde bekome ich nie die Fehlermeldung. Auf C:/Temp haben soweit alle Schreibrechte, anders ist es nachher bei der Backend Datei der Access Anwendung. Aber es hatte bisher alles funktioniert, ich schau mal ob ich nochmal an die Fehlermeldung rankomme.

Achso das cls oder exit oder eof funktionieren nicht so recht, da ja in der Batch Datei die mde geöffnet wird und erst wenn die Antwendung geschlossen ist, schließt sich auch das Dos Fenster.

Edit: Habe nun die Fehlermeldung

Script: C:\Temp\name.vorname\Mitarbeitertool\mitarbeitertool.vbs
Zeile: 17
Zeichen: 7
Fehler: Microsoft Office Access kann die Datenbank nicht öffnen, da sie nicht exisitert, oder da ein anderer Benutzer sie bereits im Exklusivmodus geöffnet hat.
Code: 800A1EBA
Quelle: (null)

hmm, was bedeutet das nun korrekt? Also vorher wie gesgat hat es wunderbar funktioniert.

Ablauf, für jeden Mitarbeiter wird beim Start der BAT die (Frontend) mitarbeitertool.mde auf dem Laufwerk C:/Temp unter dem Usernamen gespeichert, außerdem liegt da auch die mitarbeitertool.vbs. DIe Backend mitarbeitertool_back.mde liegt auf einem anderen NetzLaufwerk was für alle anderen aber zugänglich ist.

Hmm, was mich eigentlich nur stört ist das Dos Fenster was ständig offen bleibt, bei der vbs Variante wird dieses geschlossen.

Marja
Bitte warten ..
Mitglied: maneich
01.03.2006 um 13:02 Uhr
Hallo,

nun, möglicherweise wurde mit dem Service-Pack 2 von Acces hier etwas dahingehend verändert, daß z.B. hier über VBS nicht mehrere User gleichzeitig auf das Object zugreifen können.

Die Frage ist, ob sich der Exclusivmodus umstellen läßt, ob es dafür einen Schalter oder Eintrag gibt. Dazu kenne ich aber Acces zu wenig.

Daß es mit cls, eof oder exit nicht klappt, habe ich mir fast gedacht. In den meisten Fällen startet die Batch ein Programm/Datei und springt dann zur nächsten Zeile ohne die Ausführung abzuwarten. Bei manchen Anwendungen klappt das aber nicht so, da hier die nächste Zeile erst ausgeführt wird, wenn der vorherige Aufruf abgearbeitet ist. Was hier der Fall zu sein scheint.

In einer VBS z.B. kann man eine Batch starten ohne daß sich ein Fenster öffnet mit

WSHShell.Run "%Comspec% /c Name.bat", 0

Wobei die 0 am Ende dafür sorgt, daß die Batch unsichtbar ausgeführt wird.

Ansonsten kannst du mal versuchen mit "On Error Resume Next" zu testen.

Dazu benötigst Du aber den Rückgabecode für fehlerfreie oder fehlerhafte Ausführung, den Du bekommst mit "x = WSHShell.OpenCurrentDatabase Link" und in der VBS z.B. mit

do
On Error Resume Next
x = WSHShell.OpenCurrentDatabase Link
Err.Clear
WScript.Sleep 1000
Loop Until x = ?

Damit bleibt das Script solange in der Schleife bis der Rückgabecode OK ist. Willst Du den Fehler abfragen dann mit "Loop Until not x = ?". Das klappt aber nicht bei allen Fehlermeldungen. Mußt eben mal testen.

Mit freundlichen Grüßen maneich
Bitte warten ..
Mitglied: Biber
01.03.2006 um 14:31 Uhr
Och menno,
da hätte ich auch gleich drauf kommen können...

Ändere bitte die Zeile:
WSHShell.OpenCurrentDatabase Link
-auf-
WSHShell.OpenCurrentDatabase Link, FALSE

...dann wird der exclusive-mode ausgeschaltet.
Syntax ist ja: OpenCurrentDatabase dbname[, exclusive].

Grüße
Biber
Bitte warten ..
Mitglied: Marja
01.03.2006 um 15:34 Uhr
Hallo Biber

leider ohne Erfolg bei einigen, selbst denen die keine Schreibrechte haben funktioniert es und bei manchen nicht.

Das mit der verdeckten Batch Datei, kann mir das einer vielleicht nochmal richtig erklären, also irgendwie bekomme ich das nicht hin, sorry


Marja
Bitte warten ..
Mitglied: Biber
01.03.2006 um 15:48 Uhr
Hm, Marja,

und die (unwahrscheinliche) Erklärung, dass es gar nicht an dem VBS-Schnipsel liegt, sondern tatsächlich irgendein User diese Datei manchmal exklusiv öffnet und alle anderen dadurch blockiert?

Gilt denn wenigstens für die User, die NICHT draufkommen, die eine Fehlermeldung bekommen, dass das reproduzierbar ist - auch nach Feierabend, wenn kein anderer User mehr mit der *.mde arbeitet?

Ratlos
Biber
Bitte warten ..
Mitglied: maneich
01.03.2006 um 18:07 Uhr
Hallo,

eine Batch über VBS zu starten ist einfach.

Du schreibst eine VBS z.B. start.vbs

Inhalt:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "CMD.EXE /C Hier genau Adresse + Name.bat der Batch einfügen", 0
WScript.Quit


Beinhaltet die Adresse Leerzeichen dann in Doppelte Hochkomma einschließen.

WshShell.Run "CMD.EXE /C ""Hier genau Adresse + Name.bat der Batch einfügen""", 0

Das ist alles.


@Biber

Man lernt immer wieder etwas dazu; das mit der Angabe "false" war mir nicht bekannt.

Mit freundlichen Grüßen maneich
Bitte warten ..
Mitglied: Marja
02.03.2006 um 07:50 Uhr
mmh das ist gar nicht so einfach, den wie gesagt bei mir klappt das an jedem PC, bei unterschiedlichen anderen Personen nicht, dadurch das dies auch noch ein Schichtbetrieb ist ist es schwierig eine Minuten zu finden wo keiner dieses Tool nutzt

Vorher wie gesagt auch ohne Probleme erst durch das Office Update Service Paket.

Marja
Bitte warten ..
Mitglied: Marja
02.03.2006 um 08:02 Uhr
Hallo Maneich

würde es bedeuten:

WshShell.Run "CMD.EXE /C c:\blabla.bat", 0

??

Marja
Bitte warten ..
Mitglied: savanna
12.06.2007 um 21:44 Uhr
Das liegt an dem SP2, da wird WSH in der Registry standardmäßig ausgeschaltet.
Kann dir die Keys aber zukommen lassen wenn noch benötigt.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst Batch-Datei startet in der Aufgabenplanung nicht (12)

Frage von koehlo zum Thema Windows Server ...

Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...