【问题标题】:Batch file to map network drive批处理文件映射网络驱动器
【发布时间】:2021-02-23 05:05:49
【问题描述】:

我需要创建一个 bat 文件来检查驱动器号的可用性并将共享文件夹映射到空闲驱动器号上。

我尝试在 IF 条件下工作,但如果用户多次启动它,这很容易出现多个驱动器映射。

任何人都可以帮助了解如何为此使用 FOR 循环吗?

if not exist U:\ (
    net use U: \\test\branchshare$
exit
)
elseif not exist X:\ (
    net use X: \\test\branchshare$
exit
)
elseif not exist Y:\ (
    net use Y: \\test\branchshare$
exit
)
pause

【问题讨论】:

  • net use * \\test\branchshare$ 获取第一个空闲驱动器号。测试是否已经连接,可以使用net use | find /i "\\test\branchshare$" && echo already connected

标签: windows batch-file cmd command-line command


【解决方案1】:

我已经能够解决一些问题。谢谢你们的帮助

@echo off

CLS
net use | find /i "\\testfiler\test"
IF ERRORLEVEL 1 GOTO 0002 
IF ERRORLEVEL 0 GOTO 0001

:0001
echo.
echo The share folder is already available
echo.
pause
exit /b

:0002
net use * \\testfiler\test 
echo.
echo Share folder has been mapped successfully
echo.
pause
exit /b

【讨论】:

    【解决方案2】:

    引用 @Stephans 评论,只是为了提供更多细节。

    使用你的方法,或者只是net use * \\host\share每次运行它都会创建一个共享,它不关心你是否有多个实例,只要它可以分配一个驱动器号,它就会。然后,您可以使用条件运算符为您确定它作为一个单行:

    (net use | find /i "\\test\branchshare$")>nul 2>&1 && echo already connected || net use * "\\test\branchshare$"
    

    上面使用find来让我们根据errorlevel判断结果。如果successul (errorlevel 0) 表示找到字符串,我们简单地说我们找到了。如果没有找到,errorlevel 1,它将执行 else 运算符。

    上面也可以这样运行:

    (net use | find /i "\\test\branchshare$")>nul 2>&1 
    if not errorlevel 1 (
        echo already connected
      ) else (
        net use * "\\test\branchshare$"
    )
    

    所以这两个例子都只会设置一次特定的共享。

    【讨论】:

      【解决方案3】:

      不需要 for 循环。 您可以使用PUSHD 将驱动器号分配给网络路径,并在完成后使用POPD 释放驱动器号。

      示例:

      @echo off
      echo %CD%
      PUSHD \\test\branchshare$
      echo %CD% 
      POPD
      echo %CD%
      pause
      

      看到推/?和弹出/?有关这些命令的详细信息。

      【讨论】:

      • 是的,但这是为了将其用作复制文件的临时措施。 OP 实际上是在尝试为他的用户创建实际的共享。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 2015-01-27
      相关资源
      最近更新 更多