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?

Ray Vega
quelle

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.

pk.
quelle
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.

Berzemus
quelle
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.

Sam Cogan
quelle
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.

David Spillett
quelle
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.

JohnZaj
quelle
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
AquaAlex
quelle
0

Würde der Knotenpunktbefehl hier nicht funktionieren?

Bart Silverstrim
quelle
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
0

Hey, hier ist einer zum Ausprobieren ...

Gehen Sie auf diese Seite und suchen Sie nach "Unbekannten Pfad zulassen". Funktioniert das?

Hier und hier gibt es mehr Hintergrundinformationen

Bart Silverstrim
quelle
Die Suche ergab keine Ergebnisse.
Pacerier