Answers:
类型
net use
这将显示所有当前连接的网络驱动器。
OK Z: \\127.0.0.1\c$ Microsoft Windows Network
echo %cd%
呢
echo %cd%
输出当前目录(Z:\ABC
),而不输出\\netDrive\ABC
这是一个很老的问题,但是..我一直在寻找与尝试创建批处理时使用的完全相同的答案,该批处理将使用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 = name),否则类似于CMD命令。
(DO...)
,批处理示例丢失了SET ...
,并且bOriginalPath
未在任何地方定义。
蝙蝠的路径可能与工作目录不同。因此,我们需要蝙蝠内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%
上面的代码在大多数情况下都可以使用,但是在某些情况下,网络使用和查找不起作用,以下是经过最终测试的工作方法:
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%