Come gestite "CMD non supporta i percorsi UNC come directory correnti"?


Risposte:


34

Se stai pensando di copiarlo, è sempre utile conoscere i comandi pushde popd. A volte non puoi essere sicuro di quali lettere di unità siano già utilizzate sul computer su cui verrà eseguito lo script e devi semplicemente prendere la successiva lettera di unità disponibile. Dal momento net useche richiederà di specificare l'unità, è possibile utilizzare semplicemente pushd \\server\foldere quindi popdal termine.


Se si specifica '*' anziché una lettera di unità, net use utilizzerà il primo controllo di unità disponibile da ZA. quindi 'net use * \\ server \ share' senza Z: l'unità mappata
mapperebbe

Ma poi non sai quale lettera di unità è stata mappata, ai fini del resto dello script.
tomfanning

@tomfanning Puoi trovare la lettera di unità usando questo (wmic logicdisk get caption, providername, drivetype, volumename) dal prompt dei comandi e quindi analizzare l'output cercando il tuo \\ servername \ sharename. serverfault.com/questions/62578/…
Chris Magnuson,

1
@pk. Cosa succede se lo script si è arrestato in modo anomalo prima che venga eseguito il tuo popd?
Pacerier,

15

Oppure puoi passare la shell a PowerShell . Ha il supporto completo per i percorsi UNC.


Tranne quando explorer.exe ha un handle sul file che si sta tentando di eliminare. Anche con la finestra di explorer chiusa, penso che il provider PS FileSystem (supponendo che sia un provider) probabilmente utilizza explorer.exe sotto il cofano. o stai dicendo che c'è un modo per usare UNC senza il provider?
JohnZaj,

11

È possibile utilizzare net useper mappare un'unità di rete su un percorso UNC e quindi passare all'unità mappata.


2
È vero che questo è l'unico modo per farlo dalla riga di comando, ma diffidare di usarlo per qualsiasi cosa tranne i comandi usa e getta (cioè cose che fai solo una volta) perché altrimenti si verificano problemi con l'unità non mappata o mappato ma non connesso e più nomi utente :(
Mark Henderson

1
Non è possibile passare a questa directory, ma è comunque possibile utilizzarlo nei comandi: dir \\ someserver \ stuff call \\ someserver \ stuff \ whatever.bat
Benoit

1
In realtà potresti essere in grado di usare \\ someserver \ share ... hai solo bisogno dell'hack reg per farlo :-)
Bart Silverstrim,

@BartSilverstrim, How?
Pacerier,


1

Oltre a mappare esplicitamente un'unità in modo che cmdpossa far fronte, cosa che potrebbe essere necessaria anche per altre utility, puoi anche provare una shell di comandi alternativa come PowerShell.


1

Questo ha funzionato per me in Win8x64:

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

Dovresti essere in grado di farlo anche in HKCU, assicurati di disconnetterti e riconnetterti.


1

come per @pk usa pushd & popd, ecco un esempio.

utilizzare pushd per creare un'unità virtuale temporanea e, al termine, eseguire un popd per eliminare l'unità virtuale temporanea

: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

Il comando di giunzione non funzionerebbe qui?


1
Non pensare così, junction funziona solo per le directory locali.
Berzemus,

Funziona? Dall'articolo di Wikipedia: "I punti di giunzione possono essere collegati solo a directory su un volume locale; i punti di giunzione con condivisioni remote non sono supportati".
Peter Mortensen,

@#%!# hai ragione. Pensavo fosse come un comando mount, ho dimenticato di avere questo problema quando l'ho esaminato due anni fa. sospiro Mi dispiace ...
Bart Silverstrim,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.