Ich versuche, eine Batchdatei von einer Netzwerkfreigabe aus auszuführen, erhalte jedoch die folgende Meldung: "UNC-Pfad wird nicht unterstützt. Standardmäßig Windows-Verzeichnis." Die Batchdatei befindet sich in \\Server\Soft\WPX5\install.bat
. Wenn ich als Administrator angemeldet bin, navigiere ich von meinem Windows 7-Desktop zu \\Server\Soft\WP15\
und doppelklicke auf install.bat. Dann bekomme ich den "UNC-Pfad werden nicht unterstützt". Botschaft. Ich habe im Internet einige Vorschläge gefunden, die besagen, dass das Mapping-Laufwerk nicht funktioniert, aber die Verwendung eines symbolischen Links löst dieses Problem, aber der symbolische Link hat für mich nicht funktioniert. Im Folgenden finden Sie den Inhalt meiner Batch-Datei. Ich würde mich über jede Unterstützung freuen, die mir dabei helfen kann, das zu erreichen, was ich versuche. Grundsätzlich möchte ich die Batchdatei von \\Server\Soft\WP15\install.bat
ausführen können.
Batchdatei Inhalt
mklink /d %userprofile%\Desktop\WP15 \\server\soft\WP15
\\server\soft\WP15\setup.exe
robocopy.exe "\\server\soft\WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s \\server\soft\WPX5\Custom\Migrate.reg
Wie entferne ich außerdem den symbolischen Link, nachdem die Installation abgeschlossen ist?
PUSHD und POPD sollten in Ihrem Fall helfen.
@echo off
:: Create a temporary drive letter mapped to your UNC root location
:: and effectively CD to that location
pushd \\server\soft
:: Do your work
WP15\setup.exe
robocopy.exe "WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s WPX5\Custom\Migrate.reg
:: Remove the temporary drive letter and return to your original location
popd
Geben Sie PUSHD /?
in der Befehlszeile ein, um weitere Informationen zu erhalten.
Es gibt eine Registrierungseinstellung , um diese Sicherheitsüberprüfung zu vermeiden (verwenden Sie sie jedoch auf eigene Gefahr):
Unter dem Registrierungspfad
HKEY_CURRENT_USER
\Software
\Microsoft
\Befehlsprozessorfügen Sie den Wert DisableUNCCheck REG_DWORD hinzu und setzen Sie den Wert auf 0 x 1 (Verhexen).
Hinweis: Unter Windows 10 Version 1803 scheint die Einstellung unter HKLM zu liegen: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
Ich glaube, cls
ist die beste Antwort. Sie verbirgt die UNC-Nachricht, bevor sie jemand sehen kann. Ich kombinierte es mit einem @pushd %~dp0
direkt danach, so dass es so aussieht, als würde man das Skript öffnen und die Position in einem Schritt abbilden, wodurch weitere UNC-Probleme vermieden werden.
cls
@pushd %~dp0
:::::::::::::::::::
:: your script code here
:::::::::::::::::::
@popd
Anmerkungen:
pushd
ändert Ihr Arbeitsverzeichnis in den Speicherort der Skripts auf dem neuen zugeordneten Laufwerk.
popd
am Ende, um das zugeordnete Laufwerk aufzuräumen.
Grundsätzlich können Sie es nicht von einem UNC-Pfad aus ausführen, ohne diese Nachricht zu sehen.
Normalerweise füge ich einfach eine CLS
oben im Skript ein, damit ich diese Nachricht nicht sehen muss. Geben Sie anschließend den vollständigen Pfad zu den Dateien in der Netzwerkfreigabe an, die Sie verwenden müssen.
Ich musste in der Lage sein, nur Windows Explorer durch die Serverfreigabe zu durchsuchen und dann die Batchdatei doppelt zu starten. @dbenham führte mich zu einer einfacheren Lösung für mein Szenario (ohne die popd
-Sorgen):
:: Capture UNC or mapped-drive path script was launched from
set NetPath=%~dp0
:: Assumes that setup.exe is in the same UNC path
%NetPath%setup.exe
:: Note that NetPath has a trailing backslash ("\")
robocopy.exe "%NetPath%Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s %NetPath%..\WPX5\Custom\Migrate.reg
:: I am not sure if WPX5 was typo, so use ".." for parent directory
set NetPath=
pause
Anstatt den Stapel direkt vom Explorer aus zu starten, erstellen Sie eine Verknüpfung zum Stapel und legen Sie das Startverzeichnis in den Eigenschaften der Verknüpfung auf einen lokalen Pfad wie% TEMP% oder etwas anderes fest.
Um den symbolischen Link zu löschen, verwenden Sie den Befehl rmdir.
Ich bin vor kurzem mit dem gleichen Problem konfrontiert, als ich mit einer Batchdatei auf einem Netzwerkfreigabe-Laufwerk in Windows 7 arbeitete.
Ein anderer Weg, der für mich funktionierte, bestand darin, den Server über Windows Explorer einem Laufwerk zuzuordnen: Extras -> Netzlaufwerk zuordnen. Vergeben Sie einen Laufwerkbuchstaben und einen Ordnerpfad zu\IhremServer. Da ich häufig mit der Netzwerkfreigabe arbeite, ist die Zuordnung durch die Netzwerkfreigabe komfortabler und es wurde der Fehler "UNC-Pfad werden nicht unterstützt" behoben.
Meine Situation ist nur etwas anders. Ich führe beim Starten eine Batchdatei aus, um die neueste Version interner Geschäftsanwendungen zu verteilen.
In dieser Situation verwende ich den Windows-Registrierungslaufschlüssel mit der folgenden Zeichenfolge
cmd /c copy \\serverName\SharedFolder\startup7.bat %USERPROFILE% & %USERPROFILE%\startup7.bat
Beim Start werden zwei Befehle in der richtigen Reihenfolge ausgeführt. Zuerst wird die Batchdatei lokal in ein Verzeichnis kopiert, für das der Benutzer die Berechtigung hat. Führen Sie dann dieselbe Batchdatei aus. Ich kann ein lokales Verzeichnis c:\InternalApps erstellen und alle Dateien aus dem Netzwerk kopieren.
Dies ist wahrscheinlich zu spät, um die Frage des ursprünglichen Posters zu lösen, aber es kann jemand anderem helfen.
Dies ist der RegKey, den ich verwendet habe:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001
Meine env windows10 2019 lts Version und ich füge diese beiden Binärdaten hinzu, um diesen Fehler zu beheben
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
DisableUNCCheck value 1 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Command Processor
DisableUNCCheck value 1