windows - pushd ikke tillader UNC stier, cmd extensions er aktiveret

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har brugt pushd "\%~dp0" tricket i årevis til at køre batchfiler fra serversteder uden problem. Det virker ikke længere, og det er ikke fordi CMD-udvidelser er utilgængelige, eller jeg har kørt ud af drevbogstaver ( REF1, ref2). Enhver anelse om hvad der foregår?


Systemet er Win7-Pro SP1 x64.


3rd party installationer, der interagerer med eller ændrer CMD (jeg er temmelig sikker på at jeg har brugt pushd + UNC efter at have installeret disse, det er en meget almindelig teknik, men kan ikke sværge til det):



  • ConEmu 160619 (x64) Stabil

  • Clink v0.4.4



. [15] [16]


d:>pushd \server4share
' '
CMD does not support UNC paths as current directories.


.


d:>reg query "HKCUSoftwareMicrosoftCommand Processor" /v EnableExtensions

HKEY\_CURRENT\_USERSoftwareMicrosoftCommand Processor
    EnableExtensions    REG\_DWORD    0x1

d:>net use
New connections will be remembered.

Status       Local     Remote                    Network
-------------------------------------------------------------------------------
OK           B:        \server1dev              Microsoft Windows Network
OK           F:        \server1dev              Microsoft Windows Network
OK           G:        \server2corp             Microsoft Windows Network
OK           H:        \server3home             Microsoft Windows Network
OK           I:        \server4share            Microsoft Windows Network
OK           N:        \server1dev              Microsoft Windows Network
OK           O:        \server1dev              Microsoft Windows Network
OK           P:        \server5files            Microsoft Windows Network
OK           Q:        \server1dev              Microsoft Windows Network
OK           R:        \server5work             Microsoft Windows Network
             S:        \server6data             Microsoft Windows Network
OK           T:        \server5maps             Microsoft Windows Network
OK           U:        \server7layers           Microsoft Windows Network
OK           V:        \server8homeme          Microsoft Windows Network
OK           W:        \server5warehouse        Microsoft Windows Network
OK           X:        \server5work             Microsoft Windows Network
OK           Y:        \server5dev\_repo         Microsoft Windows Network
OK           Z:        \server5
epository       Microsoft Windows Network
OK                     \server5work             Microsoft Windows Network
                       \mysites.sharepoint.orgDavWWWRoot  Web Client Network
OK                     \server4ITSupport        Microsoft Windows Network
                       \sharepoint.org@SSLDavWWWRoot  Web Client Network
                       \sharepoint.orgDavWWWRoot      Web Client Network

The command completed successfully.

Bedste reference


Fandt ud af det! Jeg var uden for drevbogstaver, men ikke fra kortlagte eller lokale drev. Jeg har en Dell-skærm med integreret USB-hub, og det forfordeler drevbogstaver J: til L: Selvom ingen enhed er tilsluttet. Jeg bruger dem så sjældent, jeg har glemt alt om det.


Hvad førte mig til opdagelsen var at slette alle ikke-essentielle kortlægede drev og gentagne gange pushd \servershare indtil fejlen opstod, idet det bemærkede, at det altid sprang nogle drevbogstaver og derefter kigget på Disk Management.


D:>pushd \servershare

Q:>pushd \servershare

O:>pushd \servershare

N:>pushd \servershare

F:>pushd \servershare

B:>pushd \servershare
' '
CMD does not support UNC paths as current directories.


Diskhåndtering viser forud tildelte USB-drevbogstaver [17]

Andre referencer 1


Jeg kan se nogle flere midlertidige drevmapper af samme UNC-sti i net use -udgang, for eksempel \server1dev:


OK           B:        \server1dev              Microsoft Windows Network
OK           F:        \server1dev              Microsoft Windows Network
OK           N:        \server1dev              Microsoft Windows Network
OK           O:        \server1dev              Microsoft Windows Network
OK           Q:        \server1dev              Microsoft Windows Network


Bemærk at popd bruges sammen med pushd i det linkede pushd '\% ~ dp0' trick:


@echo off

    :: Create a temporary drive letter mapped to your UNC root location
    ::                          and effectively CD to that location
pushd "\%~dp0"

    :: Do your work
       :: launch executables directly
something.exe parameters
       :: aternatively, launch executables using START
start "" something.exe parameters

       :: IMPORTANT! launch batch files using CALL command
       ::            to return from a called script to the calling one
CALL something.BAT parameters
CALL something.CMD parameters

    :: Remove the temporary drive letter and return to your original location
POPD