【问题标题】:Batch script to automate mapping of network drive but unable to detect network drive用于自动映射网络驱动器但无法检测网络驱动器的批处理脚本
【发布时间】:2019-01-18 16:56:22
【问题描述】:

我正在编写一个脚本来自动映射 2 个网络驱动器,使用相同的代码,除了相应地更改 IP 地址,只能成功映射 1 个网络驱动器。

我已尝试手动映射网络驱动器,它工作正常。

if EXIST \\172.168.101.187\smb (
set shareExistsTX=1
echo Sender Share exist. 
) else (
set shareExistsTX=0
echo Sender Share Dont exist. 

)

if EXIST Y:\ (
set driveExistsTX=1
echo Drive Y:/ Unavailable
) else (
set driveExistsTX=0
echo Drive Y:/ available
)


if %shareExistsTX%==1 if %driveExistsTX%==1 (
echo deleting network drive
net use /delete Y: /y
set driveExistsTX=0
)


if %shareExistsTX%==1 if not %driveExistsTX%==1 (echo mounting smbserver Sender
net use Y: \\172.168.101.187\smb /persistent:Yes /user:user password
)

set driveExistsTX=
set shareExistsTX=

if EXIST \\172.168.101.188\smb (
set shareExistsRX=1
echo Receiver Share Exist
) else (
set shareExistsRX=0
echo Receiver Share Dont exist. 

)

if EXIST Z:\ (
set driveExistsRX=1
echo Drive Z:/ Unavailable
) else (
set driveExistsRX=0
echo Drive Z:/ available
)


if %shareExistsRX%==1 if %driveExistsRX%==1 (
echo deleting network drive
net use /delete Z: /y
set driveExistsRX=0
)


if %shareExistsRX%==1 if not %driveExistsRX%==1 (
echo mounting smbserver Receiver
net use Z: \\172.168.101.188\smb /persistent:Yes /user:user password

)

set driveExistsRX=
set shareExistsRX=
pause

我应该映射两个网络驱动器,但是只有 172.168.101.187 被映射,而出现“接收器共享不存在”的错误消息。这意味着脚本无法检测到 172.168.101.188 的网络驱动器

【问题讨论】:

  • 所有代码都是必需的,因为我的讲师要求我逐步指导映射网络驱动器并显示输出消息。我已经尝试将代码更改为 if EXIST \\172.168.101.188\smb* 并且我仍然无法映射它
  • 因为您完全错过了我的评论,所以您没有添加最后一个反斜杠和点。 if EXIST \\172.168.101.188\smb\*.请看下面的答案。
  • 我的错,我在打字时犯了一个错误。我尝试使用最后一个反斜杠和点,但它也失败了。原因是因为我映射到的网络驱动器当前是空的,因此共享中没有文件可以尝试此代码。
  • 在下面的回答中查看我的编辑。

标签: batch-file


【解决方案1】:

要直接解决您的问题,请测试共享中的项目是否存在,而不是共享本身:

if EXIST \\172.168.101.188\smb\*.
if EXIST \\172.168.101.187\smb\*.

编辑 但是,根据您的评论,文件夹中没有任何内容,所以让我们创建一些东西,测试它并再次删除它。像这样:

type nul>\\172.168.101.188\smb\_tmp
if EXIST \\172.168.101.188\smb\*.
type nul>\\172.168.101.187\smb\_tmp
if EXIST \\172.168.101.187\smb\*.

然后在脚本中映射完成后,添加:

del /Q Y:\_tmp
del /Q Z:\_tmp

del /Q \\172.168.101.187\smb\_tmp >nul
del /Q \\172.168.101.188\smb\_tmp >nul

因此,要获取您的实际脚本并对其进行所有更改,我们将得到这个,它应该可以工作:

@echo off
type nul>\\172.168.101.187\smb\_tmp
type nul>\\172.168.101.188\smb\_tmp
if EXIST \\172.168.101.187\smb (
set shareExistsTX=1
echo Sender Share exist. 
) else (
set shareExistsTX=0
echo Sender Share Don't exist. 

)

if EXIST Y:\ (
set driveExistsTX=1
echo Drive Y:/ Unavailable
) else (
set driveExistsTX=0
echo Drive Y:/ available
)


if %shareExistsTX%==1 if %driveExistsTX%==1 (
echo deleting network drive
net use /delete Y: /y
set driveExistsTX=0
)


if %shareExistsTX%==1 if not %driveExistsTX%==1 (echo mounting smbserver Sender
net use Y: \\172.168.101.187\smb /persistent:Yes /user:user password
)

set driveExistsTX=
set shareExistsTX=

if EXIST \\172.168.101.188\smb (
set shareExistsRX=1
echo Receiver Share Exist
) else (
set shareExistsRX=0
echo Receiver Share Dont exist. 

)

if EXIST Z:\ (
set driveExistsRX=1
echo Drive Z:/ Unavailable
) else (
set driveExistsRX=0
echo Drive Z:/ available
)


if %shareExistsRX%==1 if %driveExistsRX%==1 (
echo deleting network drive
net use /delete Z: /y
set driveExistsRX=0
)


if %shareExistsRX%==1 if not %driveExistsRX%==1 (
echo mounting smbserver Receiver
net use Z: \\172.168.101.188\smb /persistent:Yes /user:user password

)
del /Q Y:\_tmp>nul
del /Q Z:\_tmp>nul
set driveExistsRX=
set shareExistsRX=
pause

那么这个版本可能略有不同?

我不需要检查驱动器的存在,我只是尝试映射它而不考虑:

@echo off
setlocal enabledelayedexpansion
set "shares=\\172.168.101.187\smb \\172.168.101.188\smb"

for %%i in (%shares%) do (
    type nul>%%i\_tmp
    if "%%i"=="\\ppsm202zatcwi\Mac" set "dr=Y:"
    if "%%i"=="\\172.168.101.188\smb" set "dr=Z:"
    if exist %%i\*. (
      net use !dr! %%i >nul 2>&1 && echo Mapped !dr! to %%i
      del /Q !dr!\_tmp>nul
      ) else (
        echo Sharename %%i not found unable to map !dr!
   )
 )
 pause

【讨论】:

    猜你喜欢
    • 2021-02-23
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多