Asp.net Batch auf Webserver starten wird nicht ausgeführt
Hallo,
Win XP SP3, Visual Studio 10
Hoffentlich finde ich hier Hilfe, obwohl bestimmt dieses Thema schon mehrmals ausgelutscht wurde - aber ich bekomms nicht hin und benötige Hilfe.
Problem: Über den Click auf einen Button auf einer Intranet-Seite soll eine Batch-Datei auf dem Webserver gestartet werden. Jetzt ist es so, daß der Batch zwar gelesen, aber nicht ausgeführt wird (Batch und Fehlermeldung s.u.)
der dazugehörige Code in der aspx.vb, um den Batch aufzurufen sieht folgendermassen aus:
Dim strfilePath1 As String = "/c "
Dim strFilePath2 As String = "\\WEB1\AE\pdfmerge6.cmd"
Dim strfilePath3 As String = strfilePath1 & strFilePath2
''Dim strFilePath As String = Server.MapPath("\\WEB1\AE\pdfmerge.cmd")
' Create the ProcessInfo object
Dim psi2 As New System.Diagnostics.ProcessStartInfo("cmd.exe", strfilePath3)
psi2.UseShellExecute = False
psi2.RedirectStandardOutput = True
psi2.RedirectStandardInput = True
psi2.RedirectStandardError = True
psi2.WorkingDirectory = "\\WEB1\AE\"
'psi.WorkingDirectory = "\\WEB1\AE\"
' Start the process
Dim proc2 As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi2)
proc2.WaitForExit()
'' Open the batch file for reading
Dim strm2 As System.IO.StreamReader = System.IO.File.OpenText(strFilePath2)
'' Attach the output for reading
Dim sOut2 As System.IO.StreamReader = proc2.StandardOutput
Dim sErr As System.IO.StreamReader = proc2.StandardError
'' Attach the in for writing
Dim sIn2 As System.IO.StreamWriter = proc2.StandardInput
'Write each line of the batch file to standard input
While strm2.Peek() <> -1
sIn2.WriteLine(strm2.ReadLine())
End While
strm2.Close()
' '' Exit CMD.EXE
'Dim stEchoFmt2 As String = "# {0} run successfully. Exiting"
'sIn2.WriteLine([String].Format(stEchoFmt2, strFilePath2))
'sIn2.WriteLine("EXIT")
''Close the process
proc2.Close()
' Read the sOut to a string.
Dim results2 As String = sOut2.ReadToEnd().Trim()
Dim results3 As String = sErr.ReadToEnd().Trim()
'' Close the io Streams;
'sIn2.Close()
'sOut2.Close()
'Write out the results.
Dim fmtStdOut As String = "<font face=courier size=0>{0}</font>"
Me.Response.Write([String].Format(fmtStdOut, results2.Replace(System.Environment.NewLine, "<br>")))
Dim fmtStdOut2 As String = "<font face=courier size=0>{0}</font>"
Me.Response.Write([String].Format(fmtStdOut2, results3.Replace(System.Environment.NewLine, "<br>")))
''
output3.Text = System.Security.Principal.WindowsIdentity.GetCurrent().Name
Dieser o.g. Code wird lokal auf meinen Rechner korrekt ausgeführt, aber nicht auf dem Webserver. Egal, ob ich mit impersonate=true mit AdminUser und Passwort oder ohne arbeite, der Batch führt die Befehle nicht auf dem Webserver aus. Auch der Netzwerkdienst hat genügend Rechte. Auch die Lokalen Sicherheitsrichtlinien und die Gruppenrichtlinien sind so eingestellt, daß die entsprechenden User Stapelverarbeitungsprogrammen ausführen können. Ich weiß nicht mehr weiter.
...jetzt zur Fehlermeldung:
hier noch mal der batch der ausgeführt wird:
net use T: /delete
net use T: \\SERVER\ORDNER /USER:SERVER\USER PW
copy T:\*.pdf \\web1\ae /Y
pdftk \\web1\ae\*.pdf cat output \\web1\AE\AE_GES.pdf
net use T: /delete
Fehlerausgabe bei der Ausführung im Intranet:
C:\WINDOWS>net use T: /delete
C:\WINDOWS>net use T: \\SERVER\ORDNER /USER:SERVER\USER PW
C:\WINDOWS>copy T:\*.pdf \\web1\ae /Y
C:\WINDOWS>pdftk \\web1\ae\*.pdf cat output \\web1\AE\AE_GES.pdf
C:\WINDOWS>net use T: /delete"\\WEB1\AE"
CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht untersttzt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.
Die Netzwerkverbindung konnte nicht gefunden werden.
Sie erhalten weitere Hilfe, wenn Sie NET HELPMSG 2250 eingeben.
Systemfehler 85 aufgetreten.
Der lokale Ger„tename wird bereits verwendet.
Das System kann das angegebene Laufwerk nicht finden.
Error: Failed to open PDF file:
\\web1\ae\*.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
Die Netzwerkverbindung konnte nicht gefunden werden.
Sie erhalten weitere Hilfe, wenn Sie NET HELPMSG 2250 eingeben.
Ich habe gegoogelt und herausgefunden, daß Systemfehler 85 bedeutet, daß Netzlaufwerke schon verbunden sind und nicht noch mal verbunden werden können. Was eigentlich Quatsch ist, da ich im batch ja erstmal vorab zur Sicherheit evt existierende Netzlaufwerke (hier T
trenne/lösche.
Wie bekomme ich diesen batch auf dem Webserver zum Laufen???
Bitte Hilfe, Danke.
Gruss
Tobias
Win XP SP3, Visual Studio 10
Hoffentlich finde ich hier Hilfe, obwohl bestimmt dieses Thema schon mehrmals ausgelutscht wurde - aber ich bekomms nicht hin und benötige Hilfe.
Problem: Über den Click auf einen Button auf einer Intranet-Seite soll eine Batch-Datei auf dem Webserver gestartet werden. Jetzt ist es so, daß der Batch zwar gelesen, aber nicht ausgeführt wird (Batch und Fehlermeldung s.u.)
der dazugehörige Code in der aspx.vb, um den Batch aufzurufen sieht folgendermassen aus:
Dim strfilePath1 As String = "/c "
Dim strFilePath2 As String = "\\WEB1\AE\pdfmerge6.cmd"
Dim strfilePath3 As String = strfilePath1 & strFilePath2
''Dim strFilePath As String = Server.MapPath("\\WEB1\AE\pdfmerge.cmd")
' Create the ProcessInfo object
Dim psi2 As New System.Diagnostics.ProcessStartInfo("cmd.exe", strfilePath3)
psi2.UseShellExecute = False
psi2.RedirectStandardOutput = True
psi2.RedirectStandardInput = True
psi2.RedirectStandardError = True
psi2.WorkingDirectory = "\\WEB1\AE\"
'psi.WorkingDirectory = "\\WEB1\AE\"
' Start the process
Dim proc2 As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi2)
proc2.WaitForExit()
'' Open the batch file for reading
Dim strm2 As System.IO.StreamReader = System.IO.File.OpenText(strFilePath2)
'' Attach the output for reading
Dim sOut2 As System.IO.StreamReader = proc2.StandardOutput
Dim sErr As System.IO.StreamReader = proc2.StandardError
'' Attach the in for writing
Dim sIn2 As System.IO.StreamWriter = proc2.StandardInput
'Write each line of the batch file to standard input
While strm2.Peek() <> -1
sIn2.WriteLine(strm2.ReadLine())
End While
strm2.Close()
' '' Exit CMD.EXE
'Dim stEchoFmt2 As String = "# {0} run successfully. Exiting"
'sIn2.WriteLine([String].Format(stEchoFmt2, strFilePath2))
'sIn2.WriteLine("EXIT")
''Close the process
proc2.Close()
' Read the sOut to a string.
Dim results2 As String = sOut2.ReadToEnd().Trim()
Dim results3 As String = sErr.ReadToEnd().Trim()
'' Close the io Streams;
'sIn2.Close()
'sOut2.Close()
'Write out the results.
Dim fmtStdOut As String = "<font face=courier size=0>{0}</font>"
Me.Response.Write([String].Format(fmtStdOut, results2.Replace(System.Environment.NewLine, "<br>")))
Dim fmtStdOut2 As String = "<font face=courier size=0>{0}</font>"
Me.Response.Write([String].Format(fmtStdOut2, results3.Replace(System.Environment.NewLine, "<br>")))
''
output3.Text = System.Security.Principal.WindowsIdentity.GetCurrent().Name
Dieser o.g. Code wird lokal auf meinen Rechner korrekt ausgeführt, aber nicht auf dem Webserver. Egal, ob ich mit impersonate=true mit AdminUser und Passwort oder ohne arbeite, der Batch führt die Befehle nicht auf dem Webserver aus. Auch der Netzwerkdienst hat genügend Rechte. Auch die Lokalen Sicherheitsrichtlinien und die Gruppenrichtlinien sind so eingestellt, daß die entsprechenden User Stapelverarbeitungsprogrammen ausführen können. Ich weiß nicht mehr weiter.
...jetzt zur Fehlermeldung:
hier noch mal der batch der ausgeführt wird:
net use T: /delete
net use T: \\SERVER\ORDNER /USER:SERVER\USER PW
copy T:\*.pdf \\web1\ae /Y
pdftk \\web1\ae\*.pdf cat output \\web1\AE\AE_GES.pdf
net use T: /delete
Fehlerausgabe bei der Ausführung im Intranet:
C:\WINDOWS>net use T: /delete
C:\WINDOWS>net use T: \\SERVER\ORDNER /USER:SERVER\USER PW
C:\WINDOWS>copy T:\*.pdf \\web1\ae /Y
C:\WINDOWS>pdftk \\web1\ae\*.pdf cat output \\web1\AE\AE_GES.pdf
C:\WINDOWS>net use T: /delete"\\WEB1\AE"
CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht untersttzt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.
Die Netzwerkverbindung konnte nicht gefunden werden.
Sie erhalten weitere Hilfe, wenn Sie NET HELPMSG 2250 eingeben.
Systemfehler 85 aufgetreten.
Der lokale Ger„tename wird bereits verwendet.
Das System kann das angegebene Laufwerk nicht finden.
Error: Failed to open PDF file:
\\web1\ae\*.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
Die Netzwerkverbindung konnte nicht gefunden werden.
Sie erhalten weitere Hilfe, wenn Sie NET HELPMSG 2250 eingeben.
Ich habe gegoogelt und herausgefunden, daß Systemfehler 85 bedeutet, daß Netzlaufwerke schon verbunden sind und nicht noch mal verbunden werden können. Was eigentlich Quatsch ist, da ich im batch ja erstmal vorab zur Sicherheit evt existierende Netzlaufwerke (hier T
Wie bekomme ich diesen batch auf dem Webserver zum Laufen???
Bitte Hilfe, Danke.
Gruss
Tobias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 163153
Url: https://administrator.de/forum/asp-net-batch-auf-webserver-starten-wird-nicht-ausgefuehrt-163153.html
Ausgedruckt am: 19.02.2025 um 23:02 Uhr
14 Kommentare
Neuester Kommentar
Hallo,
oder
Gruß,
Peter
Zitat von @tat1308:
Ich habe gegoogelt und herausgefunden, daß Systemfehler 85 bedeutet, daß Netzlaufwerke schon verbunden sind und nicht
noch mal verbunden werden können. Was eigentlich Quatsch ist, da ich im batch ja erstmal vorab zur Sicherheit evt
Na, ob das wirklich Quatsch ist?Ich habe gegoogelt und herausgefunden, daß Systemfehler 85 bedeutet, daß Netzlaufwerke schon verbunden sind und nicht
noch mal verbunden werden können. Was eigentlich Quatsch ist, da ich im batch ja erstmal vorab zur Sicherheit evt
==============================================================
net use T: /delete
net use T: \\SERVER\ORDNER /USER:SERVER\USER PW
copy T:\*.pdf \\web1\ae /Y
pdftk \\web1\ae\*.pdf cat output \\web1\AE\AE_GES.pdf
net use T: /delete
Dein Laufwerk T: brauchst du doch gar nicht. Lass es doch weg.net use T: /delete
net use T: \\SERVER\ORDNER /USER:SERVER\USER PW
copy T:\*.pdf \\web1\ae /Y
pdftk \\web1\ae\*.pdf cat output \\web1\AE\AE_GES.pdf
net use T: /delete
copy \\SERVER\ORDNER\*.PDF \\web1\ae /Y
pdftk \\web1\ae\*.pdf cat output \\web1\AE\AE_GES.pdf
pdftk \\SERVER1\ORDNER\*.pdf cat output \\web1\AE\AE_GES.pdf
Gruß,
Peter

Moin,
Gruß
Ich habe gegoogelt und herausgefunden, daß Systemfehler 85 bedeutet, daß Netzlaufwerke schon verbunden sind und nicht noch mal verbunden werden können.
Was eigentlich Quatsch ist, da ich im batch ja erstmal vorab zur Sicherheit ....
Was eigentlich Quatsch ist, da ich im batch ja erstmal vorab zur Sicherheit ....
- teilweise antonymisierten Quatsch net use T: \\SERVER\ORDNER /USER:SERVER\USER PW und teilweise "echte" Daten copy T:\*.pdf \\web1\ae /Y (auch noch ohne Code Blöcke) geschrieben habe
Error: Failed to open PDF file:
\\web1\ae\*.pdf
- DAS ist doch die Fehlermeldung, der gegoogelte 85er ist doch B oder C Körbchen....
- ich verwette - wenn der obige "Ausdruck" tatsächlich ungekürzt hier preisgegeben ist, dass da kein "copy" gelaufen ist.
Das System kann das angegebene Laufwerk nicht finden. - Die Zeile ist der Output vom Copybefehl.
Daran ändert zu 99.99999% der Tipp von Peter auch nix - denn ein richtig gemapptes Laufwerk t:\ mit tatsächlich dort vorhandenen pdfs würde nur dann nicht kopieren können - wenn man keine Leserechte auf der Quelle oder Schreibrechte auf dem Ziel hätte.\\web1\ae\
ist der Punkt, wo du ansetzen mußt.Gruß
Moin tat1308,
Inclusive der "UNC-Pfade werden nicht untersttzt."-Fehlerzeile?
Bei den "net use"-Versuchen wollte ich mich nicht einmischen, die sind ja schon in Arbeit.
Ich wollte eigentlich nur diese UNC-Zeile anfassen.
Grüße
Biber
Inclusive der "UNC-Pfade werden nicht untersttzt."-Fehlerzeile?
Bei den "net use"-Versuchen wollte ich mich nicht einmischen, die sind ja schon in Arbeit.
Ich wollte eigentlich nur diese UNC-Zeile anfassen.
Grüße
Biber

Moin,
du bist aber schon leicht beratungsresistent?
Gruß
du bist aber schon leicht beratungsresistent?
Zitat von @tat1308:
oh, jetzt eine etwas andere Fehlermeldung (jetzt mit Java???):
C:\WINDOWS>net use Z: /delete
C:\WINDOWS>net use Z: \\SERVER\ORDNER /USER:SERVER\USER PW
C:\WINDOWS>copy Z:\*.pdf \\web1\ae /Y C:\WINDOWS>pdftk \\web1\ae\*.pdf cat output \\web1\AE\AE_GES.pdf
C:\WINDOWS>net use Z: /delete"\\WEB1\AE"
CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht untersttzt.
oh, jetzt eine etwas andere Fehlermeldung (jetzt mit Java???):
C:\WINDOWS>net use Z: /delete
C:\WINDOWS>net use Z: \\SERVER\ORDNER /USER:SERVER\USER PW
C:\WINDOWS>copy Z:\*.pdf \\web1\ae /Y C:\WINDOWS>pdftk \\web1\ae\*.pdf cat output \\web1\AE\AE_GES.pdf
C:\WINDOWS>net use Z: /delete"\\WEB1\AE"
CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht untersttzt.
/ snip
\ snap
\ snap
Was soll ich jetzt tun?
- 1) Uns vielleicht mal erklären, warum wir unsere Tasten so quälen, wenn bei dir nix davon ankommt?
- 2) evtl. mal die Zeile mit dem 85er einfach als Information und nicht als Fehler sehen?
- 3) kurz nachdenken, welchen Grund es gäbe ein benutztes Laufwerk zu trennen und dann wieder zu mappen - und evtl überlegen, ob man mit dem eh unnötigen Gedöhnse nicht einem anderen Intranetuser der wo auf deinen Link mit der vba die eine Bätsch ausführt klickert nicht mit dem dismounten des Laufwerks den Ast absägt, auf dem sein Job sitzt?
- 4) Vielleicht mal in einer Dosbuxxe den neu dazugekommenen Befehl net use Z: /delete"\\WEB1\AE" eintippern und die Meldung durchackern, die im gegensatz zum 85er wirklich eine Fehlermeldung ist?
- 5) Oder sollte ich es anders sagen - hätt ich doch im Urlaub nicht nach fremden Problemen gesucht, wäre der Tag erfreulicher...
Gruß

Moin,
"So funktioniert das ja doch - denn der falsche Net Use löscht ja das Laufwerk nicht mehr"....
Bitte gern geschehen und nimms nicht auf die leichte Schulter - die Größe und vor allen die Geduld mitbringen ist nur die halbe Wahrheit - Wissen zu haben, das man vermitteln kann und jemand, der sich diesem vermittelten Wissen - wenn auch verpackt - selber aneignet - der Rest vom Fest..
Zitat von @tat1308:
Hallo Timo Beil,
Dein Verhalten zeugt von Respektlosigkeit.
Es gibt genug Leute die die Größe und vor allen die Geduld mitbringen, anderen zu helfen. Schade, daß Dein Niveau so weit unten liegt, daß habe ich nicht erwartet.
Das du auf meine Punkte 3-5 nicht eingehst - diese dich aber wirklich zum nachdenken bringen sollten- jedoch schon leider Ich hab die mal oben nummeriert - vielleicht findest du ja doch noch etwas Zeit dafür.Hallo Timo Beil,
Dein Verhalten zeugt von Respektlosigkeit.
Es gibt genug Leute die die Größe und vor allen die Geduld mitbringen, anderen zu helfen. Schade, daß Dein Niveau so weit unten liegt, daß habe ich nicht erwartet.
- Schade dass dein Niveau so weit unten liegt, dass du noch niemandem geholfen hast - das es sowas gibt, habe ich aber schon erwartet und wäre mir eigentlich keine einzige Silbe wert.....
Den Batch noch im richtigen Ordner abgelegt und seither funktioniert es prima. Ich bin begeistert.
Naja - wenn ich mir das genauer ansehe...
net use Z: /delete"\\WEB1\AE"
net use Z: /delete"\\WEB1\AE"
"So funktioniert das ja doch - denn der falsche Net Use löscht ja das Laufwerk nicht mehr"....
Vielen Dank an alle für ihre Hinweise, ich habe wieder einmal dazugelernt.
Bitte gern geschehen und nimms nicht auf die leichte Schulter - die Größe und vor allen die Geduld mitbringen ist nur die halbe Wahrheit - Wissen zu haben, das man vermitteln kann und jemand, der sich diesem vermittelten Wissen - wenn auch verpackt - selber aneignet - der Rest vom Fest..

- räusper
Zitat von @tat1308:
nein
nein
so wie hier
net use Z: /delete"\\WEB1\AE"
ist nicht das Problem gewesen. Dieses Netzlaufwerk wird vorher auf Existenz geprüft und dann blablabla, wenn blablabla
sorry, aber wenn du uns - und mehr als das was du schreibst - wissen wir ja nicht - diese zeilen präsentierst:
Zitat von @tat1308:
oh, jetzt eine etwas andere Fehlermeldung (jetzt mit Java???):
C:\WINDOWS>net use Z: /delete
C:\WINDOWS>net use Z: \\SERVER\ORDNER /USER:SERVER\USER PW
oh, jetzt eine etwas andere Fehlermeldung (jetzt mit Java???):
C:\WINDOWS>net use Z: /delete
C:\WINDOWS>net use Z: \\SERVER\ORDNER /USER:SERVER\USER PW
Dann sehe ich da kein dann blabla wenn blabla - ich sehe nur das, was drunter steht:
Die Netzwerkverbindung konnte nicht gefunden werden.
- Und glaub mir einfach - wie diese Fehlermeldung zustande kommt und das die nur in Verbindung mit Net Use auftaucht, das weiß ich.
- Das deine präsentierte Net use Befehlskette löchrig wie ein schweizer Käse ist - auch das ist Fakt.
der eigentliche Prozess ist doch hier nicht wichtig. Und wenn ich das Ding lösche, mappe oder sonstige Gemeinheiten anstelle, wen interessierts? Das war nicht zielrelevant.
- Man kann auch ein Stahlgerüst mit Uhu Kleber zusammen halten - wayne interessierts....
- Zielrelevant - puh... siehe meine letzten Zeilen....
- Ich wär ja aus diversen Gründen dafür, das uns Biber dem Fred ein Sicherheitsschloss verpasst und du dann mal in einem halben Jahr nochmal hier reinschaust und du dir sicher sein kannst, dass das was jetzt da steht, schon immer da stand und nicht verändert wurde.
Gruß