私はネットワークドライブを持っています - Z:\
にマップされています
cmd
から完全なネットワークパスを知るための簡単なコマンドはありますか?
すなわちcmd
がZ:\ABC\
を示していれば、\\networkDrive\MappedDir\ABC
を出力するコマンドが好きでした。
Net Use
は問題ありませんが、(クイックコピー用に)現在の作業ディレクトリのフルパスを取得したいのですが。
タイプ
Net Use
これにより、現在接続されているすべてのネットワークドライブが表示されます。
OK Z: \\127.0.0.1\c$ Microsoft Windows Network
これはかなり古い質問ですが、パッチの実際の場所への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それ以外はCMDコマンドと似ています。
常にプロンプトに表示させたい場合は、
set Prompt=$M$Q$S$P
uNCパスとドライブレターベースのパスが表示されます。
バットのパスは作業ディレクトリとは異なる場合があります。だから私たちはコウモリの中でMykorrhizaの最初のアプローチが必要です。ステータスの欠如やローカルディスクドライブの状況に対応するために、追加のチェックが必要です。以下は作業コードです。
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%