考虑我想通过脚本(批处理)映射带有共享网络驱动器的驱动器,我需要映射
例如:T:
到\\192.168.1.2\network
但是当它已经映射时,例如:T: ->
\\192.168.1.2\network
我不想再映射它,
我尝试了以下代码段,因为它只是第一次映射,当共享驱动器发生更改时,它没有进行重新映射,任何人都可以告诉代码片段出了什么问题以及如何解决。< / p>
问题是,当我从\\192.168.1.2\network
更改为\\192.168.1.6\network
时,它只会检查T:\Jboss
是否已映射,而且它不会断开连接并重新映射为\\192.168.1.6\network
,还有一个事情是\\192.168.1.2\network
以及\\192.168.1.6\network
具有相同的目标Jboss
if exist T:\Jboss (
echo already T:\Jboss exists
)
if not exist T:\Jboss (
echo disconnect T:
net use T: /delete
echo connected T: to network
net use T: \\192.168.1.2\network\persistent:no
)
答案 0 :(得分:0)
显式检查某个驱动器号是否映射到某个网络资源:
执行net use
,过滤驱动器号,再次为该资源过滤该行,将输出重定向到nul
。 (比检查可能存在于另一个资源中的文件或目录要好得多)
net use |find " T: "|find " \\192.168.1.2\network ">nul && (
echo already connected
) || (
echo not yet connected
)
&&
执行为“如果上一个命令成功,那么......”
||
执行为“如果上一个命令失败,那么......”
答案 1 :(得分:0)
net use T:
也会返回当前的连接状态:
>>> net use T: Local name T: Remote name \\192.168.1.2\network Resource type Disk Status Connected # Opens 1 # Connections 1 The command completed successfully.
您可以过滤Status
值以检索连接状态:
net use T: | find "Status" | find "Connected" > nul 2>&1 || (
net T: /DELETE
net use T: \\192.168.1.2\network
)