DOS-Fenster (Batch-Datei) bleibt mit der Warnung "UNC-Pfade werden nicht unterstützt" stehen
Hallo zusammen,
wir haben folgende Batch-Datei erstellt:
@echo off
if exist P:\. net use P: /DELETE
net use P: \\nws-XXX.de\vol0\prog
P:
cd \Programmordner\Unterverzeichnis
PROGRAMM.exe
exit
_____________________________________________________________
Wir erhalten dabei folgende Fehlermeldung:
"\\nws-XXX.de\vol0\prog\Programmordner\Unterverzeichnis"
CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht unterstützt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.
P: wurde erfolgreich gelöscht.
Der Befehl wurde erfolgreich ausgeführt.
___________________________________________________________
Das Programmverzeichnis samt Inhalt befindet sich auf einem Novell-Netware-Server (Fileserver).
Eigentlich sollte nach erfolgreichem Start des Programms das DOS-Fenster geschlossen werden. Dies funktioniert allerdings nicht. Das Programm startet zwar, das DOS-Fenster bleibt jedoch stehen.
Wie müsste die Batch-Datei angepasst werden, damit das Fenster nach Programmstart geschlossen wird? Oder gibt es einen anderen Workaround?
Vielen Dank für eure Unterstützung,
Paulikid
wir haben folgende Batch-Datei erstellt:
@echo off
if exist P:\. net use P: /DELETE
net use P: \\nws-XXX.de\vol0\prog
P:
cd \Programmordner\Unterverzeichnis
PROGRAMM.exe
exit
_____________________________________________________________
Wir erhalten dabei folgende Fehlermeldung:
"\\nws-XXX.de\vol0\prog\Programmordner\Unterverzeichnis"
CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht unterstützt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.
P: wurde erfolgreich gelöscht.
Der Befehl wurde erfolgreich ausgeführt.
___________________________________________________________
Das Programmverzeichnis samt Inhalt befindet sich auf einem Novell-Netware-Server (Fileserver).
Eigentlich sollte nach erfolgreichem Start des Programms das DOS-Fenster geschlossen werden. Dies funktioniert allerdings nicht. Das Programm startet zwar, das DOS-Fenster bleibt jedoch stehen.
Wie müsste die Batch-Datei angepasst werden, damit das Fenster nach Programmstart geschlossen wird? Oder gibt es einen anderen Workaround?
Vielen Dank für eure Unterstützung,
Paulikid
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 275979
Url: https://administrator.de/contentid/275979
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo @Paulikid,
Die Batch-datei ist so schon richtig.
Auch die Fehlermeldung ist "in Ordnung". Wenn du eine Batch-Datei startest, wird das Working Directory auf das aktuelle Verzeichnis gesetzt. Wenn du nun im Explorer einen Doppelklick darauf machst, dann ist der aktuelle Ordner das Working Directory. Und wenn du die Batch über
Du kannst das mit abfangen.
Jetzt zum eigentlichen Problem des "nicht beenden".
Die Batch wartet darauf, dass dein PROGRAMM.EXE fertig wird.
Das kannst du umgehen durch
Gruß,
@Snowman25
Die Batch-datei ist so schon richtig.
Auch die Fehlermeldung ist "in Ordnung". Wenn du eine Batch-Datei startest, wird das Working Directory auf das aktuelle Verzeichnis gesetzt. Wenn du nun im Explorer einen Doppelklick darauf machst, dann ist der aktuelle Ordner das Working Directory. Und wenn du die Batch über
\\server\pfad\zur\batch.bat
ausführst, versucht die CMD mit \\server\pfad\zur als Working Directory zu starten, was nicht geht. Darum wird es automatisch auf %windir% gesetzt.Du kannst das mit
PUSHD \\%~P0
Jetzt zum eigentlichen Problem des "nicht beenden".
Die Batch wartet darauf, dass dein PROGRAMM.EXE fertig wird.
Das kannst du umgehen durch
start "" programm.exe
Gruß,
@Snowman25
Moin Paulikid,
es schadet auch nichts, wenn du einmalig folgenden HKCU-Wert hinzufügst:
Der macht in etwa das, was der Name suggeriert - die Fehlermeldung mit den nicht unterstützten UNC-Pfaden sollte danach weg sein.
Grüße
Biber-
es schadet auch nichts, wenn du einmalig folgenden HKCU-Wert hinzufügst:
REG ADD "HKCU\Software\Microsoft\Command Processor" /v DisableUNCCheck /t REG_DWORD /d 1 /f
Der macht in etwa das, was der Name suggeriert - die Fehlermeldung mit den nicht unterstützten UNC-Pfaden sollte danach weg sein.
Grüße
Biber-
"Du kannst das mit
01. PUSHD \\%~P0
abfangen."
An welcher Stelle im Skript?
Ich hab dasselbe Problem und finde nicht heraus, an welcher Stelle ich den Befehl eingeben soll!
Wir haben eine Batch erstellt, mit der eine Software auf Clients verteilt werden soll, dabei wird eine Install_OK.txt erstellt, damit die Installation nicht bei jedem Login erneut ausgeführt wird. Die .exe ist komplett silent und funktioniert lokal ausgeführt perfekt, nach wenigen sekunden ploppen die Symbole auf und die Software ist verfügbar. So sieht die Batch aus:
IF EXIST "c:\Install_OK.txt" GOTO END
\\DC1LAB\Software Deployment\*.exe
echo "Install Successful" > "c:\Install_OK.txt"
:END
Folgendes bekomme ich beim Ausführen der Batch auf dem Client:
UNC-Pfade werden nicht unterstützt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.
Der Netzwerkname wurde nicht gefunden.
01. PUSHD \\%~P0
abfangen."
An welcher Stelle im Skript?
Ich hab dasselbe Problem und finde nicht heraus, an welcher Stelle ich den Befehl eingeben soll!
Wir haben eine Batch erstellt, mit der eine Software auf Clients verteilt werden soll, dabei wird eine Install_OK.txt erstellt, damit die Installation nicht bei jedem Login erneut ausgeführt wird. Die .exe ist komplett silent und funktioniert lokal ausgeführt perfekt, nach wenigen sekunden ploppen die Symbole auf und die Software ist verfügbar. So sieht die Batch aus:
IF EXIST "c:\Install_OK.txt" GOTO END
\\DC1LAB\Software Deployment\*.exe
echo "Install Successful" > "c:\Install_OK.txt"
:END
Folgendes bekomme ich beim Ausführen der Batch auf dem Client:
UNC-Pfade werden nicht unterstützt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.
Der Netzwerkname wurde nicht gefunden.
Hallo @Macharul,
Als erste ausführende Anweisung in deinem Skript.
Beispiel:
Erstellt ein Netzlaufwerk
Wenn jetzt einer der Schritte hierbei nicht klappt, gibt es einen Fehler.
Wenn du aber sowieso den Pfad kennst, in dem sich das Skript befinden sollte und sich dieser auch nicht ändern wird, dann mach doch einfach
Wenn dein Skript garnicht von einem UNC-Pfad aufgerufen wird, sondern von einem bereits gemappten Laufwerk, solltest du
Wenn dein Skript über ein anderes Skript aufgerufen wird und dabei Anführungszeichen um den Filenamen stehen, ist der Inhalt von
Ich hoffe, das hilft dir.
Gruß,
@Snowman25
Als erste ausführende Anweisung in deinem Skript.
PUSHD
funktioniert so, dass ein UNC-Pfad on-the-fly auf einen Laufwerksbuchstaben gemappt wird.Beispiel:
PUSHD \\server1\share\ordner\unterordner
Z:\
, welches auf \\server1\share
zeigt.Z:\ordner\unterordner
wir dann auf den Directory-Stack gelegt, welchen du mit PUSHD
und POPD
kontrollierst.Wenn jetzt einer der Schritte hierbei nicht klappt, gibt es einen Fehler.
Wenn du aber sowieso den Pfad kennst, in dem sich das Skript befinden sollte und sich dieser auch nicht ändern wird, dann mach doch einfach
PUSHD \\install-server\share\pfad\zum\skript
Wenn dein Skript garnicht von einem UNC-Pfad aufgerufen wird, sondern von einem bereits gemappten Laufwerk, solltest du
PUSHD %~dp0
bzw. PUSHD %~f0
verwenden.Wenn dein Skript über ein anderes Skript aufgerufen wird und dabei Anführungszeichen um den Filenamen stehen, ist der Inhalt von
%~0
allerdings nicht mehr verlässlich. Hier stolperst du über einen Bug in der cmd.exe
(siehe: hier).Ich hoffe, das hilft dir.
Gruß,
@Snowman25
Vielen Dank für die Erklärung Snowman25,
ich habe das Problem bereits gelöst. Ich habe den UNC-Pfad einfach in Anführungszeichen gesetzt, dann hat es Problemlos funktioniert.
Also nicht so:
IF EXIST "c:\Install_OK.txt" GOTO END
\\DC1LAB\Software Deployment\*.exe
echo "Install Successful" > "c:\Install_OK.txt"
:END
sondern so:
IF EXIST "c:\Install_OK.txt" GOTO END
"\\DC1LAB\Software Deployment\*.exe"
echo "Install Successful" > "c:\Install_OK.txt"
:END
Da sieht man mal, was für winzige Details manchmal num Nichterfolg führen können. Das Script wird nun beim Start des Clients per Computerrichtlinie ausgeführt und die Software wird problemlos installiert.
Vielen Dank nochmal für die Erklärung zu PUSHD, kann ich sicherlich mal gebrauchen.
Grüße, Michael
ich habe das Problem bereits gelöst. Ich habe den UNC-Pfad einfach in Anführungszeichen gesetzt, dann hat es Problemlos funktioniert.
Also nicht so:
IF EXIST "c:\Install_OK.txt" GOTO END
\\DC1LAB\Software Deployment\*.exe
echo "Install Successful" > "c:\Install_OK.txt"
:END
sondern so:
IF EXIST "c:\Install_OK.txt" GOTO END
"\\DC1LAB\Software Deployment\*.exe"
echo "Install Successful" > "c:\Install_OK.txt"
:END
Da sieht man mal, was für winzige Details manchmal num Nichterfolg führen können. Das Script wird nun beim Start des Clients per Computerrichtlinie ausgeführt und die Software wird problemlos installiert.
Vielen Dank nochmal für die Erklärung zu PUSHD, kann ich sicherlich mal gebrauchen.
Grüße, Michael