[TUT] Pristup UNC putanjama preko CP-a

poruka: 1
|
čitano: 2.924
|
moderatori: Lazarus Long, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
[TUT] Pristup UNC putanjama preko CP-a

Evo jedan mali tutorijal koji objašnjava kako pristupiti Windows UNC (Universal Naming Convention / Uniform Naming Convention) putanjama preko Command Prompta. Pri tome pvenstveno mislim na batch skripte koje bi koristile takve putanje za automatiziranje nekih procesa, ali to ne isključuje mogućnost da navedeno ne koristite i za "ručni rad" ;) ako vam je to OK. Tipičan primjer bi bio dohvaćanje podataka iz neke UNC putanje radi npr. backupa na lokalni disk.

 

 

Kao što vjerojatno većina vas već zna, bez ružnog brljanja po Registry-u i nekih dodatnih tweak-ova ovo nikad neće proći u Command Promptu...

cd \\nekiserver\sharedir

...nego ćete dobiti kratku i jasnu obavijest:

CMD does not support UNC paths as current directories.

 

 

Rješenje koje se nameće je korištenje mrežnih diskova, ali njihovo mountanje može biti operacija koja će vam:

 

a) ili pojesti nešto vremena ako to idete raditi ručno kroz Windows Explorer

 

b) ili uzrokovati glavobolje je pokušate izvestina ovaj način kroz Command Prompt:

net use * \\nekiserver\sharedir /persistent:no

 

...jer iako će net use napraviti to što želite...

Drive Y: is now connected to \\nekiserver\sharedir.

...problem će nastati kada željeni disk poželite unmountati. Ako je riječ o nekoj skripti i ako kroz neki string parser u toj skripti niste propustili output net use naredbe za mount diska, skripta neće znati koji disk unmountati. Doduše, ako mountate samo jedan disk, uvijek možete izvršiti ovu naredbu....

net use /delete * /y

 

...ali često to nije dovoljno dobro jer time forsirate unmountanje svih mrežnih diskova (što je prilično nezgodno ako ih imate više od jednog):

You have these remote connections:
    G:              \\nekidrugiserver\podaci2
    Y:              \\nekiserver\sharedir
    Z:              \\nekitreciserver\sharedir3
Continuing will cancel the connections.

The command completed successfully.

 

Naravno, za mountanje uvijek možete zadati naredbu tipa...

net use G: \\nekiserver\sharedir /persistent:no

 

...kojom ćete forsirati upotrebu određene oznake za mrežni disk, što u većini slučajeva može biti dovoljno dobro jer tada znate i koji disk unmountati...

net use /delete G: /y

...ali postoje situacije gdje to jednostavno nije primjenjivo - tipičan primjer je pristup UNC putanjama koje trebate samo povremeno (npr. samo da vi ili neka skripta dohvati / postavi neke podatke) i ne želite da vam nepotrebno uzimaju slovnu oznaku cijelo vrijeme ili jednostavno ne želite cijelo vrijeme paziti koje oznake su vam slobodne na kojim serverima i tome prilagođavati sve skripte (u slučaju da ih npr. kopirate na više servera) itd. itd.

 

 

 

Za ovakve i slične slučajeve pravo rješenje se sastoji u korištenju naredbi pushd i popd koje funkcioniraju na directory stack principu

 

Da ne ulazimo previše u teoriju, evo praktičnog primjera (primjer pretpostavlja da se nalazimo u C:\)...

pushd \\nekiserver\sharedir

 

...što će rezultirati sljedećim izlazom:

Y:>

 

Pri čemu je Y (slovna) oznaka varijabilna i dodijeljuje se po principu prve dostupne oznake (krećući se od Z prema A).

 

Sada je moguće obaviti sve potrebne akcije sa željenom UNC putanjom - na primjer...

...
copy *.* c:\backup
...
del *.*
...

 

...a kada smo gotovi, jednostavno zatvorimo otvorenu konekciju sa popd...

popd

 

...što nas vraća za jedno mjesto gore u directory stacku, odnosno u ovom primjeru u C:\:

C:\

 

 

 

Odnosno, ako napravimo kompletni C/P to bi izgledalo ovako:

C:\>
C:\> pushd \\nekiserver\sharedir
Y:\> ...
Y:\> copy *.* c:\backup
Y:\> ...
Y:\> del *.*
Y:\> ...
Y:\> popd
C:\> _

 

 

 

Moguće je stavljati i više UNC putanja na directory stack - npr.:

C:\> pushd \\nekiserver\sharedir
Z:\> pushd\\nekidrugiserver\sharedir2
Y:\> _

 

Čime je u ovom primjeru UNC1 putanja (\\nekiserver\sharedir) dobila oznaku Z, a UNC2 putanja (pushd\\nekidrugiserver\sharedir2) oznaku Y. Ako sada iskoristimo popd....

Y:\> popd
Z:\> popd
C:\> _

 

...vidimo da stvari funkcioniraju obrnuto, tj. pricip skidanja UNC putanja (tj. pridruženih oznaka) sa directory stacka ide po očekivanom LIFO (last in first out) principu. Naravno, u međuvremenu (prije izvođenja popd naredbe) se bez ograničenja možete šetati sa cd ili X: i po drugim putanjama/diskovima i raditi što god vas je volja u Command Promptu.

 

Ako želite ovu funkcionalnost iskoristiti kroz PowerShell, onda su ekvivalentne naredbe push-location i pop-location.

 

Nadam se da će vam ovo biti od pomoći.

 

 

EDIT:

Ispravljene uočene greške.

Retry. Reboot. Reinstall. Reformat.
Poruka je uređivana zadnji put uto 18.1.2011 9:42 (vlad0).
Moj PC  
2 0 hvala 2
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice