如何检查驱动器是否映射到特定网络共享驱动器

时间:2017-02-15 06:39:40

标签: batch-file

考虑我想通过脚本(批处理)映射带有共享网络驱动器的驱动器,我需要映射 例如: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
)

2 个答案:

答案 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
)