Yanıtlar:
tip
net use
Bu, şu anda bağlı olan tüm ağ sürücülerini gösterir.
OK Z: \\127.0.0.1\c$ Microsoft Windows Network
echo %cd%
?
echo %cd%
şu anki dizini ( Z:\ABC
) \\netDrive\ABC
Oldukça eski bir soru ama .. UNC yolunu yamanın bulunduğu yere kullanacak ve oradaki bazı şeyleri yapan bir grup oluşturmaya çalıştığım aynı cevabı arıyordum. Klasör ve yeniden başlat).
Bir cevap bulamadığım için kendim bir çözüm buldum, ama çok güzel değil ve kesinlikle basit bir komut değil. Ancak toplu olarak uygulamak mümkündür. CMD'de şöyle olurdu:
FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%
Dört satırı (daha iyi 4 + boş satır) kopyalayabilir ve kopyalamak için yolun bir yansımasını almak için bunları CMD'ye yapıştırabilirsiniz.
Toplu iş içinde biraz farklı kullanırsınız:
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0
% CD% değişkeni geçerli yolu saklar ve yalnızca sürücü harfine ihtiyacınız vardır, bu nedenle yalnızca NET USE içindeki FIND komutuyla ararsınız. "Tokens = 2" (veya 3, NET USE çıkışına bağlı olarak) ile% i değişkeni, aradığınız sürücü harfinin yolunu saklar. Bundan sonra ikinci SET komutu ağ sürücüsünde taradığınız klasörleri% CD: ~ 2% ekler (sürücü harfini kesmek için ofset 2).
Toplu iş için% ~ d0 veya% ~ p0 değişkenlerini kullanırsınız. % 0 toplu işin tam yolunu saklar (örneğin Z: \ temp \ test.bat;% ~ d0 = Z:;% ~ p0 = \ temp \; d = sürücü, p = yol, f = tam yol, n = name) aksi takdirde CMD komutuna benzer.
(DO...)
, toplu iş örneğinde eksik SET ...
ve bOriginalPath
hiçbir yerde tanımlanmadı.
Yarasa yolu çalışma dizininden farklı olabilir. Bu yüzden Mykorrhiza'nın bir yarasa içindeki ilk yaklaşımına ihtiyacımız var. Eksik durum ve ayrıca yerel disk sürücülerinin durumunu karşılamak için ek kontrollere ihtiyacımız var. Çalışma kodu aşağıdadır:
SET cNetworkPath=
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
SET cNetworkPath=%%i)
if "%cNetworkPath%" == "%CD:~0,2%" (
FOR /F "tokens=3" %%i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
SET cNetworkPath=%%i)
)
if "%cNetworkPath%" == "" set cNetworkPath=%CD:~0,2%
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%
Yukarıdaki kod çoğu durumda çalışır, ancak net kullanımın ve bulgunun çalışmadığı durumlarda, son olarak test edilen çalışma yöntemi şöyledir:
SET cNetworkPath=
for /f "tokens=2" %%i in ('wmic path win32_mappedlogicaldisk get deviceid^, providername ^| findstr "%CD:~0,2%"') do (set cNetworkPath=%%i)
echo %cNetworkPath%
İsteğinizde her zaman göstermesini istiyorsanız, istediğiniz
set prompt=$M$Q$S$P
size UNC yolunu ve sürücü harfine dayalı yolunu gösterecek