我有一个网络驱动器 - 映射到Z:\
是否有一个简单的命令可以了解完整的网络路径cmd
?
即如果cmd
显示Z:\ABC\
,我有一个命令来输出\\networkDrive\MappedDir\ABC
net use
很好,但我想获取当前工作目录的完整路径(用于快速复制)。
答案1
类型
net use
这将显示所有当前连接的网络驱动器。
OK Z: \\127.0.0.1\c$ Microsoft Windows Network
答案2
bat 的路径可能与工作目录不同。所以我们需要 Mykorrhiza 在 bat 中的第一种方法。为了适应状态丢失以及本地磁盘驱动器的情况,我们需要额外的检查。以下是工作代码:
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%
答案3
这是一个相当老的问题,但是......我正在寻找完全相同的答案,因为我试图创建一个批处理,它将使用 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+空行)并将它们粘贴到 CMD 中,以立即获得复制路径的回显。
在批处理中,你可以稍微不同地使用它:
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0
变量 %CD% 存储当前路径,您只需要驱动器号,因此您只需使用 NET USE 中的 FIND 命令搜索该驱动器号。使用“tokens=2”(或 3,取决于 NET USE 输出),%i 变量存储您搜索的驱动器号的路径。之后,第二个 SET 命令使用 %CD:~2%(偏移量 2 以截断驱动器号)添加您在网络驱动器上浏览的文件夹。
对于批处理,您可以使用 %~d0 或 %~p0 变量。%0 存储批处理本身的完整路径(例如 Z:\temp\test.bat;%~d0 = Z:;%~p0 = \temp\;d = 驱动器,p = 路径,f = 完整路径,n = 名称),否则它类似于 CMD 命令。
答案4
如果你希望它总是在你的提示下显示它,你可以
set prompt=$M$Q$S$P
它将显示您的 UNC 路径和基于驱动器号的路径。