![]() |
Сравнение переменной с пустым значением.
Здравствуйте. Помогите пожалуйста.
Сам скрипт Код:
set "SHARA=\\srv-public\public" Код:
for /F "tokens=1,2,3,4,5,6" %%e in ('net use ^| findstr.exe /r ".*%SHARA%.*"') do set "SHARA4F=%%e %%f %%g %%h %%i %%j" set "SOSTOYANIE=%%e" set "BUKVA=%%f" set "SHARA-NAME=%%g" Код:
%SHARA% подставить значение \\srv-public\public Код:
set "SHARA4F=Отсоединен Z: \\srv-public\public Microsoft Windows Network" set "SOSTOYANIE=Отсоединен" set "BUKVA=Z:" set "SHARA-NAME=\\srv-public\public" Код:
%SHARA% Код:
('net use ^| findstr.exe /r ".*%SHARA%.*"') Код:
IF "%SHARA4F%"=="" call :procedura Код:
:procedure Код:
set "SHARA=\\srv-public\public" Код:
echo %SOSTOYANIE% Код:
%SOSTOYANIE% Код:
IF "%SHARA4F%"=="" echo ok |
Домена нет? Если есть, то не лучше ли групповыми политиками реализовать?
|
Цитата:
Буду признателен если со скриптом поможете, DJ Mogarych |
epoddubniy, Лучше бы Вы описали задачу, а не приводили своё решение. То, что Вы изобразили - извините, это одна большая ошибка. For у Вас не работает. Убедитесь:
Код:
For /F "tokens=1,2,3,4,5,6 delims=" %%e in ('net use ^| findstr.exe /r ".*%SHARA%.*"') do Echo "kuku" & set "SHARA4F=%%e %%f %%g %%h %%i %%j" set "SOSTOYANIE=%%e" set "BUKVA=%%f" set "SHARA-NAME=%%g" Строка присваиваний неверна изначально. Код:
set "SHARA4F=%%e %%f %%g %%h %%i %%j" set "SOSTOYANIE=%%e" set "BUKVA=%%f" set "SHARA-NAME=%%g" |
epoddubniy, Как я понял задачу:
Если Z: подключен к %SHARA%, то ничего не делаем В противном случае: если Z: нет или он подключен к другому ресурсу, то отсоединяем его и net use Z: %SHARA% /Persistent:Yes Вот вариант: Код:
@Echo Off |
Цитата:
Код:
%SHARA% Код:
\\srv-public\public Не понимаю, почему интерпретатор не "хавает" %SHARE% |
Цитата:
Код:
@Echo Off |
epoddubniy,
а покажите конкретно вывод: Код:
net use|findstr /irc:"%SHARA%" |
Цитата:
Цитата:
megaloman, скажите пожалуйста, правильно ли я мыслю: если findstr.exe мне возвращает пустую строку, то переменным SOSTOYANIE, BUKVA, SHARA-NAME при выполнении кода: Код:
set "SOSTOYANIE=%%e" set "BUKVA=%%f" set "SHARA-NAME=%%g" А если им присвоилось пустое значение, почему при выполнении команды, например Код:
IF "%BUKVA%"=="" (ECHO %date%) |
Цитата:
Код:
for /F "tokens=1,2,3,4,5,6" %%e in ('net use ^| findstr.exe /I "%SHARA%"') Do Echo "Kuku" Код:
set "SOSTOYANIE=%%e" &set "BUKVA=%%f" &set "SHARA-NAME=%%g" Цитата:
Код:
Echo "%BUKVA%" |
Цитата:
Код:
@echo off --- и вывод при правильном написании Код:
@echo off |
alpap, megaloman, возможно я не совсем правильно изложил, о чем хотел поинтересоваться в предыдущем посте.
Код я отредактировал с учетом поправок. Если \\srv-public\public подключена, то все - отрабатывает отлично, вопросов - нет. Если \\srv-public\public не подключена то не отрабатывает. получилось следующее (\\srv-public\public не подключена): Код:
set "SHARA=\\srv-public\public" IF "%SHARA4F%"=="" call :procedura IF "%SHARA4F%"=="" echo "kyky" не отработали Также попробовал выполнить пошаговую отладку, результат излагаю ниже: Код:
C:\Users\adm>net use * /delete |
вот так должно работать
Код:
@echo off |
|
Цитата:
Вот вывод Net Use
Код:
Новые подключения будут запомнены. Вот тестовый код:
Код:
@Echo Off Код:
set "SHARA4F=OK K: \\Сервер\Test1 Microsoft Windows Network" |
Цитата:
я просил в п8 показать вывод, можете аккуратно замазать конфиденциальные данные. но так чтобы видно было пробелы. и просто вывод: net use |
epoddubniy, Если хочется For c токенами
Код:
@Echo Off Код:
@Echo Off |
Время: 10:13. |
Время: 10:13.
© OSzone.net 2001-