Wie gehen Sie mit „CMD unterstützt keine UNC-Pfade als aktuelle Verzeichnisse“ um?


24

Ich versuche, Verzeichnisse auf einen Dateiserver zu ändern, z. B .:

cd \\someServer\\someStuff\

Ich erhalte jedoch den folgenden Fehler:

CMD unterstützt keine UNC-Pfade als aktuelle Verzeichnisse

Mit welchen Optionen kann ich zu diesem Verzeichnis navigieren?


Antworten:


34

Wenn Sie Skripte erstellen möchten, ist es immer hilfreich, die Befehle pushdund popdkennenzulernen. Manchmal können Sie nicht sicher sein, welche Laufwerksbuchstaben bereits auf dem Computer verwendet werden, auf dem das Skript ausgeführt wird, und müssen lediglich den nächsten verfügbaren Laufwerksbuchstaben verwenden. Da net useSie das Laufwerk angeben müssen, können Sie es einfach verwenden pushd \\server\folderund dann, popdwenn Sie fertig sind.


Wenn Sie '*' anstelle eines Laufwerksbuchstabennetzes angeben, wird die erste verfügbare Laufwerksprüfung von ZA verwendet. 'net use * \\ server \ share' ohne zugeordnetes Z: Laufwerk
ordnet

Aber dann wissen Sie nicht, welcher Laufwerksbuchstabe für den Rest des Skripts zugeordnet wurde.
Tomfanning

@tomfanning Mit diesem Befehl können Sie den Laufwerksbuchstaben ermitteln (wmic logicaldisk get caption, providername, drivetype, volumename) und die Ausgabe analysieren, um nach Ihrem \\ Servernamen \ Freigabenamen zu suchen. serverfault.com/questions/62578/…
Chris Magnuson

1
@pk. Was ist, wenn das Skript abgestürzt ist, bevor es ausgeführt wird popd?
Pacerier

15

Oder Sie können Ihre Shell auf PowerShell umstellen . Es bietet vollständige Unterstützung für UNC-Pfade.


Es sei denn, explorer.exe hat ein Handle für die zu löschende Datei. Selbst wenn das Explorer-Fenster geschlossen ist, verwendet der PS FileSystem-Anbieter (vorausgesetzt, er ist ein Anbieter) wahrscheinlich explorer.exe. Oder sagen Sie, dass es eine Möglichkeit gibt, UNC ohne den Anbieter zu verwenden?
JohnZaj

11

Sie können net useein Netzwerklaufwerk einem UNC-Pfad zuordnen und dann zum zugeordneten Laufwerk navigieren.


2
Dies ist zwar die einzige Möglichkeit, dies von der Befehlszeile aus zu tun, aber seien Sie vorsichtig, wenn Sie dies für etwas anderes als Wegwerfbefehle verwenden (dh Dinge, die Sie nur einmal tun), da Sie sonst auf Probleme stoßen, wenn das Laufwerk nicht zugeordnet ist oder nicht vorhanden ist zugeordnet, aber nicht verbunden, und mehrere Benutzernamen :(
Mark Henderson

1
Sie können nicht in dieses Verzeichnis wechseln, aber Sie können es trotzdem in den Befehlen verwenden: dir \\ someserver \ stuff call \\ someserver \ stuff \ whatever.bat
Benoit

1
Eigentlich könnten Sie in der Lage sein, \\ someserver \ share zu verwenden ... Sie brauchen nur den Reg-Hack, um es zu tun :-)
Bart Silverstrim

@BartSilverstrim, wie?
Pacerier


1

Sie können nicht nur ein Laufwerk explizit zuordnen, damit cmdes den Anforderungen anderer Dienstprogramme gerecht wird, sondern auch eine alternative Befehls-Shell wie PowerShell ausprobieren.


1

Das hat bei mir in Win8x64 geklappt:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001

Dies sollte auch in HKCU möglich sein. Melden Sie sich einfach ab und wieder an.


1

Nach @pk benutze pushd & popd, hier ein Beispiel.

Verwenden Sie pushd, um ein temporäres virtuelles Laufwerk zu erstellen, und führen Sie anschließend popd aus, um das temporäre virtuelle Laufwerk zu löschen

:selectFolder
REM Confirm which Folder structure
set /p location="Delete files for which QA environment: (P)retoria, (C)ape, (L)uanda or (Q)uit? (C/L/P/Q)"
REM  I option allows for upper and lower case
if /I "%location%"=="C" set folder="\\Tfwcqa\tfwcqa\EORDERS"
if /I "%location%"=="L" set folder="\\Tfluaqa\tfluaqa\EORDERS"
if /I "%location%"=="P" set folder="\\Tfptaqa\tfptaqa\EORDERS"
if /I "%location%"=="Q" goto endBatch

REM you can not cd to a network drive so we use pushd to create a temporary virtual drive
REM cd /d %folder%
pushd %folder%

DIR /S

REM popd deletes the temporary virtual drive
popd

0

Würde der Knotenpunktbefehl hier nicht funktionieren?


1
Denken Sie nicht, Junction funktioniert nur für lokale Verzeichnisse.
Berzemus

Funktioniert es? Aus dem Wikipedia-Artikel: "Knotenpunkte können nur mit Verzeichnissen auf einem lokalen Volume verknüpft werden. Knotenpunkte zu Remotefreigaben werden nicht unterstützt."
Peter Mortensen

@#%!# Du hast recht. Ich dachte, es sei wie ein Reittierbefehl, vergaß aber, dass ich dieses Problem hatte, als ich es vor zwei Jahren untersuchte. Seufzer Entschuldigung ...
Bart Silverstrim

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.