cmdウィンドウからマップされたネットワークパスを決定する


26

ネットワークドライブがあります-にマップされています Z:\

完全なネットワークパスを知るための簡単なコマンドはありcmdますか?

すなわち、cmdショーの場合Z:\ABC\、出力するコマンドが好きでした\\networkDrive\MappedDir\ABC

net use は問題ありませんが、現在の作業ディレクトリの完全なパスを取得したい(クイックコピー用)。

回答:


37

タイプ

net use

現在接続されているすべてのネットワークドライブが表示されます。

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network

ありがとう、現在の作業ディレクトリのフルパスを取得する方法を知っていますか?
オフィリス

1
どうecho %cd%
エンドロ

@Endoro、echo %cd%現在のディレクトリ(Z:\ABC)を出力します\\netDrive\ABC
-Ofiris

それを得るためにできる簡単なコマンドラインはないと思います。あなたはそれを行うためのバッチ/パワーシェルスクリプトを書くことができるかもしれませんが、私はそれを作ろうとしませんでした。Icarusからの回答をチェックしてください:superuser.com/questions/244579 / ...必要に応じて使用できます。
ダリウス

現在接続されていないドライブ(たとえば、現在切断されているVPN経由)はどうですか?

1

これはかなり古い質問ですが、..パッチの実際の場所へのUNCパスを使用し、そこで何かを行うバッチを作成しようとしていたのとまったく同じ答えを探していました(したがって、別の場所にコピーして貼り付けます/フォルダと再起動)。

答えを見つけることができなかったので、自分で解決策を見つけましたが、それはあまり美しくなく、確かに単純なコマンドでもありません。しかし、バッチで実装することは可能です。CMDでは、次のようになります。

FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
      SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%

4行(より良い4+空行)をコピーし、CMDに貼り付けて、コピーするパスの初期エコーを取得できます。

バッチでは、少し異なる方法で使用します。

FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
      bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0

変数%CD%には現在のパスが格納され、ドライブ文字のみが必要なので、NET USEのFINDコマンドで検索するだけです。"tokens = 2"(またはNET USE出力に応じて3)を使用すると、%i変数には検索したドライブ文字へのパスが格納されます。その後、2番目のSETコマンドは、ネットワークドライブで参照したフォルダーを%CD:〜2%で追加します(ドライブ文字を切り取るためのオフセット2)。

バッチの場合は、%〜d0または%〜p0変数を使用します。%0は、バッチ自体のフルパスを格納します(例:Z:\ temp \ test.bat;%〜d0 = Z:;%〜p0 = \ temp \; d =ドライブ、p =パス、f =フルパス、n = name)それ以外の場合は、CMDコマンドに似ています。


サンプルは興味深いですが、壊れています。たとえば(DO...)、バッチの例は欠落してSET ...おり、bOriginalPathどこにも定義されていません。
マットウィルキー16

0

バットのパスは、作業ディレクトリとは異なる場合があります。ですから、コウモリの中にミコルヒザの最初のアプローチが必要です。ステータスの欠落やローカルディスクドライブの状況に対応するには、追加のチェックが必要です。作業コードは次のとおりです。

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%

上記のコードはほとんどの場合に機能しますが、net useおよびfindが機能しない場合があります。以下は最終的にテストされた作業方法です。

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%

0

常にプロンプ​​トで表示したい場合は、

set prompt=$M$Q$S$P

UNCパスとドライブ文字ベースのパスが表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.