Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
1

Не писать строку, если нет значения

01.08.2019, 20:55. Показов 2392. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Windows Batch file
1
2
3
4
5
6
7
8
9
for /f "usebackq tokens=8 delims=" %%A in (`reg query "HKLM\system\ControlSet001\services\Tcpip\Parameters\Interfaces" /se #`) do call :PROCESS "%%A"
 
goto :EOF
:PROCESS
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt          Echo;IP                              %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "DefaultGateway"`) Do >>text.txt Echo;Шлюз                        %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "NameServer"`) Do >>text.txt       Echo;DNS                           %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt           Echo;----------------------------------------------------------
goto :EOF
Вытягивается ip, шлюз и dns из реестра и записывается в text.txt рядом с собой.
В реестре если ip адрес не назначался ветка не создается, а dns создается даже если не было назначено. Можете подправить чтобы слово dns в конечном файле text.txt не появлялось если значение "NameServer" (значение DNS) в реестре пустое
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.08.2019, 20:55
Ответы с готовыми решениями:

В поиске добавить код если нет такого значения в стринггрид то вывести ошибку такого значения нет, если находит то вывод
procedure TForm1.Button5Click(Sender: TObject); var i,j,k:integer;S:string; begin for i:=1 to...

Можно ли писать программу на бумаге, если нет компьютера?
У меня в ближайшие 6 месяцев не будет компьютера. Возможно ли писать программы на обычной бумаге...

Если значения не введены, то как синтаксически писать?
if((a||b||d)==""){ //как правильно записать? На этой строке ошибка: Cannot convert 'bool' to...

Удалить строку если опеределенная ячейка в ней пуста, если нет - оставить
Добрый день! Подскажите пожалуйста, как сделать: Есть лист excel, в котором находятся данные....

9
4335 / 2125 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
02.08.2019, 17:02 2
Windows Batch file
1
ipconfig /all
отменили что-ли?
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
02.08.2019, 17:53  [ТС] 3
А можно пожалуйста по теме? Ipconfig не подходит под мои задачи
0
4335 / 2125 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
03.08.2019, 23:23 4
дайте мне вывод:
Windows Batch file
1
>file.txt (reg query "HKLM\system\ControlSet001\services\Tcpip\Parameters\Interfaces" /se #)
и я распарсю его как надо. У меня такая команда не работает в таком виде
то что вы выводите далее у меня в ключе [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Tcpip\Parameters\Interfaces\{14 A39CCE-D22B-4B29-8205-B35C14259ED5}], и то не совсем так как у вас, на чем же мне проверять-то?
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
04.08.2019, 13:16  [ТС] 5
nick]alpap[/nick], вот моя ветка реестра в архиве, рядом команды подключения и отключения. После подключения в реестре рядом с HKLM\system появляется ветка HKLM\tpm-system.
cmd будет работать так

Windows Batch file
1
2
3
4
5
6
7
8
9
for /f "usebackq tokens=8 delims=\" %%A in (`reg query "HKLM\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces" /se #`) do call :PROCESS "%%A"
 
goto :EOF
:PROCESS
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt      Echo;IP      %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "SubnetMask"`) Do >>text.txt     Echo;Маска   %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "DefaultGateway"`) Do >>text.txt Echo;Шлюз    %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "NameServer"`) Do >>text.txt     Echo;%%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt      Echo;----------------------------------------------------------
Вложения
Тип файла: zip system.zip (3.53 Мб, 1 просмотров)
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
04.08.2019, 13:29  [ТС] 6
alpap, вот моя ветка реестра в архиве, рядом команды подключения и отключения. После подключения в реестре рядом с HKLM\system появляется ветка HKLM\tpm-system.
cmd будет работать так

Windows Batch file
1
2
3
4
5
6
7
8
9
for /f "usebackq tokens=8 delims=\" %%A in (`reg query "HKLM\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces" /se #`) do call :PROCESS "%%A"
 
goto :EOF
:PROCESS
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt      Echo;IP            %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "SubnetMask"`) Do >>text.txt     Echo;Маска         %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "DefaultGateway"`) Do >>text.txt Echo;Шлюз          %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "NameServer"`) Do >>text.txt     Echo;DNS           %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\tmp-system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt      Echo;----------------------------------------------------------
Вложение 1059001

Добавлено через 6 минут
Последнее подправил, предыдущее не правильно
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
04.08.2019, 20:40  [ТС] 7
alpap,
дайте мне вывод:
Windows Batch file
1
>file.txt (reg query "HKLM\system\ControlSet001\services\Tcpip\Parameters\Interfaces" /se #)
результат этой команды:
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{2A 00EC8C-AC90-4E90-BB8E-08039D0DD1BC}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{2E D546AB-7511-4FE7-A547-153A2186DB1F}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{2F 895D55-F1FE-4AC0-A652-3AFEB78D339D}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{33 303D36-0D03-4C8E-A82E-7C5C29A5AE0E}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{53 DC95DC-BE72-460E-A1FA-85D0EB11DA90}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{57 F4BBB5-E484-42E0-A161-7EB46C8A76CE}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{5A 98984E-B072-453B-90D5-6338D9D96731}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{6C 3E3D7B-375F-46CD-BB27-3AF4DA64B065}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{84 6ee342-7039-11de-9d20-806e6f6e6963}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{B7 1CFFD1-EF85-4A7B-A55F-73EAF04641DF}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{E1 ECD433-B0B3-4D41-A40B-CD2D700BA5D6}
HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{ED B42CE7-17BE-435D-8048-64539D76BC62}
0
4335 / 2125 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
05.08.2019, 11:25 8
Лучший ответ Сообщение было отмечено mat86 как решение

Решение

mat86,
вначале кода поставьте свои значения, потому как я говорил что имена у вас и у меня видимо разные, сейчас мои, с которыми проверял
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
set "p1=DhcpIPAddress"
set "p2=DhcpSubnetMask"
set "p3=DhcpServer"
set "p4=DhcpDefaultGateway"
 
for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Tcpip\Parameters\Interfaces"') do call :# "%%a"
pause& exit
 
:#
 for /f "tokens=1,3" %%a in ('reg query "%~1"^|findstr /r /c:"%p1%[ ]" /c:"%p2%[ ]" /c:"%p3%[ ]" /c:"%p4%[ ]"') do set "%%a=%%b"
 
 >>log.txt (
  echo ----------------------------
  echo %1
  echo %p1%=%DhcpIPAddress%
  echo %p2%=%DhcpSubnetMask%
  echo %p3%=%DhcpServer%
  echo %p4%=%DhcpDefaultGateway%
  echo ----------------------------
  echo:
 )
exit /b
1
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
05.08.2019, 14:28  [ТС] 9
Вот так выводит
Кликните здесь для просмотра всего текста
----------------------------
"HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{0 b8b3a52-8839-4f0f-83a0-58ffb38ff481}"
IPAddress
SubnetMask
DefaultGateway
NameServer
----------------------------

----------------------------
"HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{2 c10a710-4425-4846-a762-b1dbdc503fa7}"
IPAddress 10.107.23.36
SubnetMask 255.255.255.0
DefaultGateway 10.107.23.1
NameServer 10.1.95.4,10.1.95.5
----------------------------

----------------------------
"HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{2 c10a710-4425-4846-a762-b1dbdc503fa9}"
IPAddress 10.7.20.50
SubnetMask 255.255.255.0
DefaultGateway 10.7.20.1
NameServer 10.1.95.4,10.1.95.5
----------------------------

----------------------------
"HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{4 e64e7c3-3a8a-4149-b3df-575fa27cb4b8}"
IPAddress 10.7.20.50
SubnetMask 255.255.255.0
DefaultGateway 10.7.20.1
NameServer
----------------------------

----------------------------
"HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{8 459e09d-10c4-11e8-90bf-806e6f6e6963}"
IPAddress 10.7.20.50
SubnetMask 255.255.255.0
DefaultGateway 10.7.20.1
NameServer
----------------------------

----------------------------
"HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{9 d3990a2-432c-4331-b26d-b12c4bb8ddd8}"
IPAddress 10.7.20.50
SubnetMask 255.255.255.0
DefaultGateway 10.7.20.1
NameServer
----------------------------

----------------------------
"HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{b 6fac4fd-18c1-48e2-9cfb-1e704e0b2ec4}"
IPAddress 10.7.20.50
SubnetMask 255.255.255.0
DefaultGateway 10.7.20.1
NameServer
----------------------------

----------------------------
"HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{d bd4ccb2-77b8-4879-8335-cb288b03bda6}"
IPAddress 10.7.20.50
SubnetMask 255.255.255.0
DefaultGateway 10.7.20.1
NameServer
----------------------------

----------------------------
"HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\{f ddb33c6-93f4-4354-b91b-cfcea2c9e5d5}"
IPAddress 10.7.20.50
SubnetMask 255.255.255.0
DefaultGateway 10.7.20.1
NameServer
----------------------------

Первая запись почему то ветка реестра и в пустых ветках подставляет ip из другой ветки. Можно чтобы там где нет ip вообще ничего не создавалось

Вот так я подправил
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
del log.txt
@echo off
set "p1=IPAddress"
set "p2=SubnetMask"
set "p3=DefaultGateway"
set "p4=NameServer"
 
for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Tcpip\Parameters\Interfaces"') do call :# "%%a"
 exit
 
:#
 for /f "tokens=1,3" %%a in ('reg query "%~1"^|findstr /r /c:"%p1%[ ]" /c:"%p2%[ ]" /c:"%p3%[ ]" /c:"%p4%[ ]"') do set "%%a=%%b"
 
 >>log.txt (
  echo ----------------------------
  echo %1
  echo %p1%                     %IPAddress%
  echo %p2%                  %SubnetMask%
  echo %p3%            %DefaultGateway%
  echo %p4%                  %NameServer%
  echo ----------------------------
  echo:
 )
exit /b
Добавлено через 9 минут
У меня сейчас такой сценарий
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
for /f "usebackq tokens=8 delims=\" %%A in (`reg query "HKLM\system\ControlSet001\servces\Tcpip\Parameters\Interfaces" /se #`) do call :PROCESS "%%A"
 
goto :EOF
:PROCESS
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt          Echo;
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt          Echo;IP                              %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "SubnetMask"`) Do >>text.txt       Echo;Маска                        %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "DefaultGateway"`) Do >>text.txt Echo;Шлюз                        %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "NameServer"`) Do >>text.txt       Echo;                                 %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt           Echo;----------------------------------------------------------
goto :EOFi
Выводит так
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
                             
 
IP                              10.107.23.36
Маска                        255.255.255.0
Шлюз                        10.107.23.1
                                 10.1.95.4,10.1.95.5
----------------------------------------------------------
 
IP                              10.7.20.50
Маска                        255.255.255.0
Шлюз                        10.7.20.1
                                 10.1.95.4,10.1.95.5
----------------------------------------------------------
Не хватает только надписи DNS. Но если добавляю слово DNS тогда получается не совсем красиво так
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DNS                           
 
IP                              10.107.23.36
Маска                        255.255.255.0
Шлюз                        10.107.23.1
DNS                           10.1.95.4,10.1.95.5
----------------------------------------------------------
 
IP                              10.7.20.50
Маска                        255.255.255.0
Шлюз                        10.7.20.1
DNS                           10.1.95.4,10.1.95.5
----------------------------------------------------------
DNS                           
DNS                           
DNS                           
DNS                           
DNS
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
05.08.2019, 20:48  [ТС] 10
Спасибо за помощь, разобрался
0
05.08.2019, 20:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2019, 20:48
Помогаю со студенческими работами здесь

Условие "если результат выполнения команды содержит заданную строку, то.., если нет, то..."
Добрый день! Подскажите пожалуйста возможно ли реализовать следующее условие в cmd/bat? Сначала...

Если C изображает цифру, то вывести строку «digit», если латинскую букву — вывести строку «lat», если русскую — вывести строку «rus»
Доброй ночи всем программерам, примитивная задачка, но в стрингах я не шарю, помогите плиз......

Как спрятать строку, если нет данных?
Здравствуйте! я в пхп полный 0. подскажите как сделать: Есть такая строка <td> <b><?php print...

Заменить значения по WHERE, а если совпадений нет то вставить
Приветствую. Можно ли одним запросом выполнить замену строки по совпадению WHERE, а если...

Если запустил Иванов, вывести строку: "Нет доступа", если Петров - "Не сегодня". Для остальных - информация о каталоге запуска bat-файла
Создать командный файл при вызове, которого указать фамилию запускающего. Если запустил Иванов, то...

Добавление в строку пробелов после знака препинания, если их нет
Программу написала, но не смогла довести до ума. Помогите Преподаватель оставил такие замечания : ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru