Batchausführung als System bricht ab - Win2k8 Server
Hallo,
ich habe eine Batchdatei, die etliche Aktionen ausführt. Eine der Aktionen ist der Aufruf eines Hilfsprogramms eines DB-Herstellers um die DSN-Einträge auszulesen bzw. zu modifizieren.
Das Kommando liesst im ersten Schritt nur die DSN-Einträge und wertet dann mittels findstr aus, ob ein bestimmter Eintrag existiert.
Bisher gab es mit dem Skript keine Probleme... schon zig Kunden (auch mit Win2k8 64bit) arbeiten problemlos damit.
Bei dem einen Kunden läuft das Skript und das Hilfsprogramm auch völlig problemlos, wenn ich es als Benutzer mit Administrationsrechten ausführe.
Wird es aber - so wie es immer genutzt wird - aus einem Java-programm aufgerufen, welches als Dienst ausgeführt wird - gibt es Probleme.
Das heißt... sobald das Skript mit dem User "System" ausgeführt wird, wird die gesamte Skriptausführung sofort beim Aufruf des Hilfsprogramms ohne irgendwelche Ausgaben / Meldungen abgebrochen.
So einfach Dinge wie die Sicherheitseinstellungen der betroffenen Dateien (also Dateieigenschaften) habe ich schon kontrolliert. Alle verwendeten Umgebungsvariablen sind System-Variablen.
Jemand noch eine Idee?
ich habe eine Batchdatei, die etliche Aktionen ausführt. Eine der Aktionen ist der Aufruf eines Hilfsprogramms eines DB-Herstellers um die DSN-Einträge auszulesen bzw. zu modifizieren.
Das Kommando liesst im ersten Schritt nur die DSN-Einträge und wertet dann mittels findstr aus, ob ein bestimmter Eintrag existiert.
Bisher gab es mit dem Skript keine Probleme... schon zig Kunden (auch mit Win2k8 64bit) arbeiten problemlos damit.
Bei dem einen Kunden läuft das Skript und das Hilfsprogramm auch völlig problemlos, wenn ich es als Benutzer mit Administrationsrechten ausführe.
Wird es aber - so wie es immer genutzt wird - aus einem Java-programm aufgerufen, welches als Dienst ausgeführt wird - gibt es Probleme.
Das heißt... sobald das Skript mit dem User "System" ausgeführt wird, wird die gesamte Skriptausführung sofort beim Aufruf des Hilfsprogramms ohne irgendwelche Ausgaben / Meldungen abgebrochen.
So einfach Dinge wie die Sicherheitseinstellungen der betroffenen Dateien (also Dateieigenschaften) habe ich schon kontrolliert. Alle verwendeten Umgebungsvariablen sind System-Variablen.
Jemand noch eine Idee?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171403
Url: https://administrator.de/contentid/171403
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
7 Kommentare
Neuester Kommentar
Hi,
hab das gleiche Problem. Bei der Suche nach einer Lösung habe ich folgendes gefunden.
Beim Erstellen muss man in das Feld "Programm/Script:" C:\Windows\SysWOW64\cmd.exe reinschreiben und dann in das Feld "Argumente (optional):"/c" und die die Batchdatei mit dem Pfad.
Beispiel:
/c"c:\Programme\Batch\backup.bat"
Hier mal noch der Link
Pobiert habe ich die Lösung noch nicht aber vielleicht hilft es dir ja.
Gruss
Michael
hab das gleiche Problem. Bei der Suche nach einer Lösung habe ich folgendes gefunden.
Beim Erstellen muss man in das Feld "Programm/Script:" C:\Windows\SysWOW64\cmd.exe reinschreiben und dann in das Feld "Argumente (optional):"/c" und die die Batchdatei mit dem Pfad.
Beispiel:
/c"c:\Programme\Batch\backup.bat"
Hier mal noch der Link
Pobiert habe ich die Lösung noch nicht aber vielleicht hilft es dir ja.
Gruss
Michael
Hallo,
als Erstes schaust Du Dir vielleicht erstmal die Ausgaben der einzelnen Kommandos an:
Hier ein Beispiel, wie Du eine Log-Datei erzeugen kannst:
1. Es ist nicht immer gut, alles in's NUL-Nirwana zu senden, was Aufschluss über den Verlauf geben könnte.
2. Und was soll in dem Fall passieren, wenn "%ASANYBIN%." == "%ASANY32BIN%." ???
Die Log-Datei entsteht im Verzeichnis der Cmd-Datei. Poste die Log-Datei hier. Vielleicht steht ja ein Hinweis auf das Problem darin.
Ein möglicher Grund wäre z.B., daß der Benutzer "System" schlicht keinen Zugriff auf den DB-Server hat, bei der Erzeugung des DSN das Programm dbdsn.exe aber eine funktionierende Verbindung aufzubauen versucht... aber das ist lediglich eine Mutmaßung von mir.
Outface
als Erstes schaust Du Dir vielleicht erstmal die Ausgaben der einzelnen Kommandos an:
Hier ein Beispiel, wie Du eine Log-Datei erzeugen kannst:
ECHO %date% %time% > "%~dpn0.log"
ECHO ASANYBIN: %ASANYBIN% >> "%~dpn0.log"
ECHO ASANY32BIN: %ASANY32BIN% >> "%~dpn0.log"
if /I NOT "%ASANYBIN%."=="%ASANY32BIN%." (
"%ASANY32BIN%\dbdsn.exe" -ls >> "%~dpn0.log"
"%ASANY32BIN%\dbdsn.exe" -ls | FINDSTR /I /c:"myapp_32bit" >> "%~dpn0.log"
ECHO ERRORLEVEL: %ERRORLEVEL% >> "%~dpn0.log"
IF ERRORLEVEL 1 (
"%ASANY32BIN%\dbdsn.exe" -y -ws myapp_32bit -c "eng=myapp;LINKS=TCPIP;Description=MyApp - 32bit" >> "%~dpn0.log" 2>> "%~dpn0.log"
)
)
ECHO *-------------- >> "%~dpn0.log"
1. Es ist nicht immer gut, alles in's NUL-Nirwana zu senden, was Aufschluss über den Verlauf geben könnte.
2. Und was soll in dem Fall passieren, wenn "%ASANYBIN%." == "%ASANY32BIN%." ???
Die Log-Datei entsteht im Verzeichnis der Cmd-Datei. Poste die Log-Datei hier. Vielleicht steht ja ein Hinweis auf das Problem darin.
Ein möglicher Grund wäre z.B., daß der Benutzer "System" schlicht keinen Zugriff auf den DB-Server hat, bei der Erzeugung des DSN das Programm dbdsn.exe aber eine funktionierende Verbindung aufzubauen versucht... aber das ist lediglich eine Mutmaßung von mir.
Outface
moin,
eventuell erscheint beim Kunden im Eigenschaftendialog der Fraglichen "Exe" oder "bat" bzw eher "cmd":
Wird denn der Errorlevel in der if-Schleife auch dementsprechend gesetzt?
sonst die Klammer weglassen und mit einer Sprungmarke Arbeiten.
Gruß Phil
eventuell erscheint beim Kunden im Eigenschaftendialog der Fraglichen "Exe" oder "bat" bzw eher "cmd":
Die Datei stammt von einem Anderen Computer ... Zugriff erlauben -> Haken setzen.
Wird denn der Errorlevel in der if-Schleife auch dementsprechend gesetzt?
sonst die Klammer weglassen und mit einer Sprungmarke Arbeiten.
Gruß Phil