Хорошо бы узнать какой именно доступ в сеть А вам нужен.
Сетевые шары, принтера, или доступ к базе данных и т.п. (на самом деле протокол и порт нужны) по этим данным можно определить правило фаервола достаточно легко.
Раз на линуксе машины доступ имеют, то они, видимо, хотят не того же самого от сети А, что машины на винде.
Illium, этот рецепт на StackOverflow - может и делат то что вам нужно, но там много лишнего, имхо.
На счет ошибки - все просто. Когда findstr не находит указанной строки в выводе ping, она ничего не возвращает, т.е. поток вывода сразу пуст. Но у вас в любом случае вызывается more и она, видимо, такую ситуацию считает ошибкой.
Можно просто подавить вывод ошибок в more:
for /f "delims=" %%j in ('more 2^>nul') do
mrusklon, Для исключения есть соответствующий ключ.
Фильтровать по размеру xcopy не умеет, но есть вариант: xcopy умеет копировать только файлы с установленным атрибутом "архивный". Этот атрибут выставляется в файле при любом его изменении автоматически системой. Соответственно вы можете предварительно на больших файлах снять этот атрибут, а потом натравить xcopy.
Для поиска больших файлов можно воспользоваться forfiles /?, а для снятия атрибута attrib /?
mrusklon, Т.к. вы только учитесь чаще запускайте команду с ключом /? там практически вся информация, которую можно по "батанике" найти.
Будете удивлены, но есть справка и для for, if, ...
Вот такой скрипт сделает подборку файлов со страницами помощи почти всех команд:
@echo off
FOR /F "usebackq tokens=1 eol= skip=1 delims= " %%a IN (`help^|findstr /B /V /C:" "`) DO help %%a >>%%a.txt
Сохраните в отдельную папку в батник и запустите.
На самом деле cmd/bat сейчас уже устарели у PoSh гораздо больше возможностей. Хотя я сам так и не добрался до его изучения, видимо потому что хорошо знаю cmd/bat :-)
xcopy в отличие от вашего варианта умеет воспроизводить дерево каталогов, если задать соответствующие ключи. В этом случае проблема одинаковыми именами отпадает почти полностью. И цикла никакого не нужно - она сама все сделает, и список файлов не нужен то же.
В вашем варианте из файлов с одинаковыми именами останется только последний, так что у вас эта проблема "замаскирована".
dmshar, я не против, давно в windows.h не заглядывал.
К тому же кто мешает рассматривать указатель как целое?
size_t intval = (size_t)handleval;
Вам сильно помогло знание того что handle это указатель? Я когда-то знал, но за ненадобностью подзабыл.
Все равно то на что указывает HANDLE вы используете с помощью функций WinAPI. HANDLE - это абстракция для обозначения дескриптора/идентификатора объекта. Он может быть указателем, но запросто может им и не быть.
Runis, Когда подключаетесь к роутеру кабелем, проверьте чтоб в компе в настройках проводного сетевого адаптера было выставлено динамическое получение адреса и DNS.
Адрес к роутеров всегда в "цифрах", т.к. что бы сделать "буквы" нужна дополнительная настройка. Адреса по умолчанию могут быть разные, но чаще всего - 192.168.1.1, в вашем должен быть такой же, судя по документации.
mrusklon, Я тут не надолго выбыл из обсуждения, возвращаюсь.
За отображение окна отвечает второй параметр в методе Run, поставьте там вместо 0, 1.
По ссылке в предыдущем моем посте набор документации по WSH (это как раз то, что вы используете), там и метод Run описан и много едругое.
mrusklon, Для скрытия окна приложения это, видимо, самый простой способ.
Не очень понял на каком этапе у вас не работает? Не срабатывает автозапуск когда вставляете флэшку? Вообще автостарт с флэшки включен в винде?
Может не срабатывать при автостарте из-за того что текущий каталог для скриптов при автостарте может быть не тем, что вы думаете. А у вас повсеместно используются относительные пути.
Выход из положения - нужно указывать полные пути. Можно отталкиваться от каталога из которого запущен скрипт.
Пока отлаживайте уберите параметр скрытия окна, пусть окна показываются, и выведите из каждого скрипта текущий каталог, а дальше действуйте по результатам.
Вывести текущий каталог vbs можно с помощью WScript.Shell.CurrentDirectory
В батниках - cd без параметров.
Каталог из которого запущен скрипт:
в батниках - %~dp0
в vbs получить полное имя запущенного скрипта: WScript.ScriptFullName, а затем с помощью методов FSO взять оттуда только путь. www.script-coding.com/WSH.html
Runis, это был сарказм.
Ваше последнее сообщение я не могу понят - какой интерфейс, куда вы не заходите, какие цифры. Объясните популярней.
На счет вашего вопроса - если у вас в разъеме разведено только 4 контакта, значит в роутере точно 100 Мбит и на большее рассчитывать не стоит.
Прежде чем возвращать, нужно убедится, что все остальное у вас настроено, иначе с другим роутером будет та же петрушка.
mrusklon, Способ один - смотреть какие ошибки, сопоставлять с кодом и что-то менять.
Если есть ошибки, то давайте их сюда, если нет - давайте код вашего vbs.
И поясните как вы запускаете "в ручную" и как не вручную. Под одним пользователем это происходит или нет.
Дмитрий, я и пишу, что "не сильно" и "в общем случае". Для 100 Мбит требования гораздо мягче, и "важность" начинает играть роль на критических расстояниях - когда кабель приближается к 100 метрам (далеко не все коммутаторы и сетевые карты поднимут 1Гбит на 100 метровом кабеле, даже правильно обжатом). А если у вас пачкорд 5-10 метров да еще на 100 Мбит - по фигу.
И еще. Вы вызываете tasklist из php, так что один экземпляр php у вас всегда работает - тот из которого вы вызвали tasklist и ваш regexp никак не отбрасывает фильтрует нужные экземпляры.
atomos90, у вас тут от cmd/bat ничего нет, сплошной php. И ждет у вас php, а не cmd. Теги вопроса не соответствуют.
Для начала уберите >NUL из start - это перенаправление стандартного вывода в NUL, возможно там на экране пишется какая-то ошибка, но вы ее не видите из-за перенаправления.
Кстати эту задачу можно достаточно легко решить на cmd, собственно вы ее практически так и решаете, только зачем то используете php для проверки существования, когда это же самое может делать и сама утилита tasklist, посмотрите ее ключи и потренируйтесь немного.
Еще можно перевести консоль в UTF8
chcp 65001
и исходники сохранить так же, и включить поддержку Unicode в проекте, и использовать для строковых констант широкие символы (wchar_t), и использовать функции строковые функции для работы с широкими символами.
PS: Но с UTF8 в консоли есть один толстый нюанс - сама по себе cmd.exe (команданя строка винды) не умеет работать с этой кодировкой.
PPS: кроме того, стандартная бибилиотека Си то же не дружит с широкими символами. Тут проще перейти на С++, там есть соответствующая поддержка.