|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сравнение переменной с пустым значением. |
|
CMD/BAT - [решено] Сравнение переменной с пустым значением.
|
Пользователь Сообщения: 105 |
Здравствуйте. Помогите пожалуйста.
Сам скрипт 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" IF "%SHARA4F%"=="Ok" call :vykhod IF "%SHARA4F%"=="Отсоединен" call :procedura IF "%SHARA4F%"=="" call :procedura :vykhod exit /b :procedura net use %bukva% /delete /yes net use Z: %SHARA% /Persistent:Yes 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" set "SHARA4F=Отсоединен Z: \\srv-public\public Microsoft Windows Network" set "SOSTOYANIE=Отсоединен" set "BUKVA=Z:" set "SHARA-NAME=\\srv-public\public" set "SHARA=\\srv-public\public" for /F "tokens=1,2,3,4,5,6" %e in ('net use ^| findstr.exe /r ".*\\srv-public\public.*"') do set "SHARA4F=%e %f %g %h %i %j" set "SOSTOYANIE=%e" set "BUKVA=%f" set "SHARA-NAME=%g" получаю а при выполнении ничего не получаю (следовательно и переход на процедуру не сработает) |
|
Отправлено: 11:02, 09-09-2021 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата epoddubniy:
@echo off set "SOSTOYANIE=%%e" set "BUKVA=%%f" set "SHARA-NAME=%%g" echo %SOSTOYANIE% echo %BUKVA% echo %SHARA-NAME% pause --- и вывод при правильном написании |
|
Последний раз редактировалось alpap, 09-09-2021 в 19:30. Отправлено: 19:24, 09-09-2021 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 105
|
Профиль | Отправить PM | Цитировать alpap, megaloman, возможно я не совсем правильно изложил, о чем хотел поинтересоваться в предыдущем посте.
Код я отредактировал с учетом поправок. Если \\srv-public\public подключена, то все - отрабатывает отлично, вопросов - нет. Если \\srv-public\public не подключена то не отрабатывает. получилось следующее (\\srv-public\public не подключена): set "SHARA=\\srv-public\public" for /F "tokens=1,2,3,4,5,6" %%e in ('net use ^| findstr.exe /i "%SHARA%"') do set "SHARA4F=%%e %%f %%g %%h %%i %%j" & set "SOSTOYANIE=%%e" & set "BUKVA=%%f" & set "SHARA-NAME=%%g" rem сетевая шара заведомо отключена, findstr.exe в выводе команды net use не найдет строку с \\srv-public\public и вернет пустое rem значение (?), следовательно токены %%e %%f %%g %%h %%i %%j будут содержать пустую строку (?), следовательно rem переменные SHARA4F, SOSTOYANIE, BUKVA, SHARA-NAME будут "пустые" (?) следовательно это условие IF "%SHARA4F%"=="" call :procedura должно отработать и rem должна выполнится процедура rem net use %bukva% /delete /yes rem net use Z: %SHARA% /Persistent:Yes IF "%SHARA4F%"=="" call :procedura IF "%SHARA4F%"=="" echo "kyky" :procedura net use %bukva% /delete /yes net use Z: %SHARA% /Persistent:Yes IF "%SHARA4F%"=="" call :procedura IF "%SHARA4F%"=="" echo "kyky" не отработали Также попробовал выполнить пошаговую отладку, результат излагаю ниже: C:\Users\adm>net use * /delete В списке нет элементов. C:\Users\adm>net use Новые подключения будут запомнены. В списке нет элементов. C:\Users\adm>set "SHARA=\\srv-public\public" C:\Users\adm>for /F "tokens=1,2,3,4,5,6" %e in ('net use ^| findstr.exe /i "%SHARA%"') do set "SHARA4F=%e %f %g %h %i %j" & set "SOSTOYANIE=%e" & set "BUKVA=%f" & set "SHARA-NAME=%g" C:\Users\adm>IF "%SHARA4F%"=="" echo "kyky" C:\Users\adm> |
Отправлено: 10:53, 10-09-2021 | #12 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать вот так должно работать
@echo off set "SHARA=\\srv-public\public" for /F "tokens=1-6" %%e in ('net use ^| findstr.exe /i "%SHARA%"') do ( set "SHARA4F=%%e %%f %%g %%h %%i %%j" set "SOSTOYANIE=%%e" set "BUKVA=%%f" set "SHARA-NAME=%%g" ) IF "%SHARA4F%"=="" ( echo "%SHARA4F%" - NULL ) else ( call :procedura "%SHARA%" "%BUKVA%" ) pause exit :procedura net use "%~2" /delete /yes net use Z: "%~1" /Persistent:Yes exit /b |
Отправлено: 12:10, 10-09-2021 | #13 |
Пользователь Сообщения: 105
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:22, 10-09-2021 | #14 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Вот вывод Net Use
Вот тестовый код:
@Echo Off Set "SHARA=\\Сервер\Test1" for /F "tokens=1-6" %%e in ('net use ^| findstr.exe /i "%SHARA%"') do ( Echo set "SHARA4F=%%e %%f %%g %%h %%i %%j" Echo set "SOSTOYANIE=%%e" Echo set "BUKVA=%%f" Echo set "SHARA-NAME=%%g" ) Exit /B |
|
------- Последний раз редактировалось megaloman, 10-09-2021 в 16:39. Отправлено: 16:12, 10-09-2021 | #15 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата epoddubniy:
я просил в п8 показать вывод, можете аккуратно замазать конфиденциальные данные. но так чтобы видно было пробелы. и просто вывод: net use |
|
Отправлено: 17:17, 10-09-2021 | #16 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать epoddubniy, Если хочется For c токенами
@Echo Off Set "MyRemote=\\Сервер\Test2" Set "MyLocal=K:" Set "Status=" &Set "Local=" &Set "Remote=" &Set "Network=" For /F "tokens=1-6 delims= " %%i in ('net use ^| findstr.exe /i "%MyRemote%"') Do If Not "%%n"=="" ( Set "Status=%%i" &Set "Local=%%j" &Set "Remote=%%k" &Set "Network=%%l %%m %%n" GoTo :Continue ) Else ( Set "Status=%%i" &Set "Remote=%%j" &Set "Network=%%k %%l %%m" ) :Continue If "%Remote%"=="" (Echo "%MyRemote%" не подключен) Else (Echo Status="%Status%" Local="%Local%" Remote="%Remote%" Network="%Network%") If /I "%MyLocal%"=="%Local%" If /I "%MyRemote%"=="%Remote%" Exit /B 0 >nul 2>&1 Net Use %MyLocal% /Delete /Y >nul 2>&1 Net Use %MyRemote% /Delete /Y Net Use %MyLocal% %MyRemote% Exit /B @Echo Off Set "MyRemote=\\Сервер\Test1" Set "MyLocal=K:" Set "Mask=Моя папка или файл на сетевом диске которая там обязательно присутствует" >nul 2>&1 Dir "%MyLocal%\%Mask%" ||( >nul 2>&1 Net Use %MyLocal% /Delete /Y >nul 2>&1 Net Use %MyRemote% /Delete /Y Net Use %MyLocal% %MyRemote% ) Exit /B |
------- Последний раз редактировалось megaloman, 11-09-2021 в 10:15. Отправлено: 09:49, 11-09-2021 | #17 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. | NiOl | Скриптовые языки администрирования Windows | 7 | 31-01-2019 19:58 | |
CMD/BAT - [решено] Сравнение переменной цикла со строковой переменной | NickM | Скриптовые языки администрирования Windows | 2 | 17-01-2017 10:28 | |
CMD/BAT - [решено] В переменной содержится имя переменной | opravdin | Скриптовые языки администрирования Windows | 3 | 28-01-2013 11:11 | |
CMD/BAT - [решено] Сравнение строк с переменной и добавление в случае отсутствия | zion87 | Скриптовые языки администрирования Windows | 2 | 04-01-2013 15:08 | |
Delphi - [решено] SQL Выбор записей с максимальным значением | tarakan1983 | Программирование и базы данных | 29 | 14-06-2011 00:13 |
|