CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Ответить
Аватара пользователя
boss911

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение boss911 »

Цитата Petya V4sechkin:



C:\Program Files\AVerTV\msxml3.dll
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD




Дарегил библиотеку и перерегистрировал C:\WINDOWS\system32\msxml3.dll ,
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD
заработал. Все же докопались, спасибо огромное.



Я так понимаю, разрабы AverTV 5.5.0.25 криво написали инсталлятор, по идеи тот должен был проверить наличие в системе msxml3.dll и если его нет, ставить и регистрировать из своего дистрибутива. Теперь придется ковырять их MSI (удалять его от туда). В папке AverTV есть еще msxml3a.dll и msxml3r.dll (у них нет DllRegisterServer), я так понял, это часть MSXML3, только не понятно, что за файл "а", их тоже грохать?



Насколько я понял, WMIC зависит от MSXML3, а у всех ли есть MSXML3, на каких ОС и на всех ли SP? В чистом XP SP3, точно знаю, что в составе есть.
Аватара пользователя
boss911

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение boss911 »

Имеется два сетевых интерфейса:



Код:

Код: Выделить всё

Подключение по локальной сети
Подключение по локальной сети 2

Использую код:



Код:

Код: Выделить всё

for /f "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where ^"NetConnectionStatus^=2^" get NetConnectionID /value') do set NETWORK=%%a
echo %NETWORK%

В таком случае имя будет получено "Подключение по локальной сети 2[/i]". Вообще-то, в других случаях, оно всегда берет первое по списку имя, но не в этом случае, оно зараза берет второе по списку подключение - "Подключение по локальной сети 2" и хоть тресни, не понятно чего.



Как с этим бороться, как ему жестко задать, что надо брать имя по списку которое первое, даже с вышеуказанным случаем?
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение Iska »

boss911, для получения нужной сортировки используйте «sort.exe». Но, думаю, дело не в этом.
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение Petya V4sechkin »

Цитата boss911:



В папке AverTV есть еще msxml3a.dll и msxml3r.dll (у них нет DllRegisterServer), я так понял, это часть MSXML3, только не понятно, что за файл "а", их тоже грохать?



Это ресурсные библиотеки, на систему уже не повлияют (если ссылок в реестре нет).




Цитата boss911:



WMIC зависит от MSXML3



Судя по логу, использует для парсинга XSL-файлов в папке \WINDOWS\system32\wbem

От MSXML3 вообще много что зависит (например, IE и MMC).




Цитата boss911:



у всех ли есть MSXML3, на каких ОС и на всех ли SP?



Список версий модулей синтаксического анализа XML Microsoft (MSXML)





Цитата boss911:



Все же докопались, спасибо огромное.



Не за что :)

Любопытный случай (казалось бы, при чем тут WMIC и AverTV). Можно (было бы) писать статью типа "Дело о неработающем WMIC" (в стиле Марка Руссиновича).
Аватара пользователя
El Sanchez

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение El Sanchez »

Цитата boss911:



Вообще-то, в других случаях, оно всегда берет первое по списку имя
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD




Сначала первую строку вывода, потом вторую и т.д. и в конце цикла переменная %a будет содержать значение последней строки вывода for. Поэтому:



Код:

Код: Выделить всё

set NETWORK=
for /f "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where ^"NetConnectionStatus^=2^" get NetConnectionID /value') do if not defined NETWORK set NETWORK=%%a
echo %NETWORK%
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение Iska »

Цитата Petya V4sechkin:



Любопытный случай (казалось бы, при чем тут WMIC и AverTV). Можно (было бы) писать статью типа "Дело о неработающем WMIC" (в стиле Марка Руссиновича).
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD




Я бы не отказался почитать Ваши статьи.




Цитата El Sanchez:



Поэтому:
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD




El Sanchez, это даже лучше, нежели было
CMD/BAT - [решено] Выбор файла из меню и копирование в нужную директорию.
. Для коротких циклов (понятно, что длинные циклы разбора многомегабайтных файлов быстрее будет — прерывать) самое оно. Пошло в «Избранное».
Аватара пользователя
boss911

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение boss911 »

Цитата Petya V4sechkin:



Любопытный случай (казалось бы, при чем тут WMIC и AverTV).
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD




Да тут дело не в AverTV, а более глобально - в криво написанных инсталляторах. Оно обязано проверить наличие нужной версии MSXML и только потом ставить или не ставить, иначе может быть конфликт версий, что приводит к сбоям в приложениях, что у меня и произошло. Ковырнул я их MSI, выдрал эти файлы, теперь больше не гадит при установке.




Цитата El Sanchez:



Сначала первую строку вывода, потом вторую и т.д. и в конце цикла переменная %a будет содержать значение последней строки вывода for.
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD




Я бы не сказал. Например, имеем:



Код:

Код: Выделить всё

Подключение по локальной сети
Подключение по локальной сети 2

оно всегда будет брать последнее. Провел эксперимент: назвал "Lan" и "Lan 2", оно взяло первое, потом я называл подключения по-разному, оно всегда брало первое по имени подключение, которое идет первым по списку, что логично (правда я тогда пробовал другой код, так как тогда у меня WMIC не работал). Мне, в принципе, так и нужно, чтобы брало всегда первое по списку имен подключение.



Спасибо. Сейчас нет возможности проверить ваш код (у меня одна сетевая), появится возможность, проверю и отпишусь. Только что проверил, теперь все работает, как мне нужно, еще раз спасибо.
Аватара пользователя
boss911

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение boss911 »

El Sanchez



К сожалению,
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD
работает по-разному. Если у меня между "Подключение" и "Подключение 2" выбирается первое, то на другом компе уже выбирается второе. Если использовать
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD
, то ситуация уже совсем противоположна будет. Я не понимаю, из-з чего это зависит. То есть, нет четкой уверенности, что всегда будет выбрано первое подключение по списку имен.



Дело в том, что на каждом компьютере по-разному выводит порядок NetConnectionID, если у меня так выводит:



Код:

Код: Выделить всё

NetConnectionID=Подключение 2
NetConnectionID=Подключение

то на другом компе порядок может быть иным (так оно и есть). Я не понимаю, из-з чего это зависит.



Если это возможно, помогите решить этот вопрос. Как к этому прикрутить SORT.EXE я не знаю.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение Iska »

Код:

Код: Выделить всё

for /f "tokens=2 delims==" %%a in (
	'wmic path Win32_networkadapter get NetConnectionID /value ^| sort.exe'
) do echo %%a


Результат…




Код:

Код: Выделить всё

1394-соединение
Подключение по локальной сети 2
Подключение по локальной сети 6
Подключение по локальной сети








На вышеприведённом коде сие будет выглядеть:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
set NETWORK=
for /f "tokens=2 delims==" %%a in (
	'wmic path Win32_networkadapter where "NetConnectionStatus=2" get NetConnectionID /value ^| sort.exe'
) do if not defined NETWORK set NETWORK=%%a
echo %NETWORK%
endlocal
exit /b 0
Аватара пользователя
boss911

Re: CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD

Сообщение boss911 »

Код:

Код: Выделить всё

for /f "tokens=2 delims==" %%a in (
	'wmic path Win32_networkadapter get NetConnectionID /value ^| sort.exe'
) do echo %%a


Мой результат




Код:

Код: Выделить всё

Подключение 2
Подключение






В данном случае, сортировка явно боком работает, аналогично, если названо "Lan" и "Lan 2", первым в списке "Lan 2". Где тут логика или сортировка работает через одно место? Кстати, в вашем примере похожий случай.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»