Пакетный скрипт для автоматизации сопоставления сетевого диска, но не может обнаружить сетевой диск - PullRequest
0 голосов
/ 18 января 2019

Я пишу сценарий для автоматизации сопоставления 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, тогда как есть сообщение об ошибке «Receiver Share Dont существующие». Это означает, что сценарий не может обнаружить сетевой диск 172.168.101.188

1 Ответ

0 голосов
/ 18 января 2019

Чтобы напрямую решить вашу проблему, проверьте наличие элементов внутри общего ресурса, а не самого ресурса:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...