• Возможен ли перенос свободного места с раздела D на раздел С средствами Windows в ActiveDirectory?

    @res2001
    Developer, ex-admin
    По моему, встроенными средствами это сделать не возможно.
    Можете по экспериментировать с утилитой diskpart - она умеет изменять размеры разделов и даже для нее можно написать скрипт (см. diskart /?). Но, на сколько помню, у нее куча ограничений из-за них сделать то что вы хотите не возможно.
    Ответ написан
    Комментировать
  • Как настроить маршруты для клиентов OpenVPN?

    @res2001
    Developer, ex-admin
    Нужно настроить маршруты на компах сети до ВПН сети через ВПН сервер.
    Теоретически можно настроить маршрут только на шлюзе по умолчанию в сети, но тогда пакеты будут ходить в ВПН через дополнительный узел, что, конечно, не добавит производительности сети.
    Ответ написан
    8 комментариев
  • Как ускорить инсерты в базу sql?

    @res2001
    Developer, ex-admin
    Укажите какую СУБД используете.

    Для увеличения производительности вставки можно отключить/удалить индексы у таблицы, куда происходит вставка. После завершения операции снова включить. Пересоздать индекс после вставки будет быстрее, чем он будет пересчитываться после вставки каждого значения.

    Кроме того обычно СУБД поддерживают операции bulk insert (пакетная вставка), возможно для этого придется конвертировать файл в формат, который понимает СУБД. У MySQL вроде такого нет, в этом случае остается только вариант, предложенный Дмитрий
    Ответ написан
  • Как ограничить смещение битов?

    @res2001
    Developer, ex-admin
    Вам нужен циклический сдвиг?
    Придется реализовывать самому - просто проверьте перед сдвигом последний бит, если он равен 1, то после сдвига прибавьте 1 к числу.
    if(m_d[i] & 0x80) {
      m_d[i] = (m_d[i]<<1);
      ++m_d[i];
    } else {
      m_d[i] = (m_d[i]<<1);
    }
    Ответ написан
    Комментировать
  • Как правильно пользоваться итераторами? Можно ли создавать 2 итератора на 1 контейнер?

    @res2001
    Developer, ex-admin
    Можно 2 итератора. Посмотрите пример проверки на полиндром тут. Правда там строки и нет изменений контейнера.
    Ответ написан
  • Почему не выполняется строка в bat файле?

    @res2001
    Developer, ex-admin
    1. замените %1 на %a, т.е. цифру на букву. В батниках цифровые переменные - это переданные в батник параметры командной строки. В циклах нужно использовать буквенные переменные.
    2.В бат файле используйте 2 знака % перед переменной: %%a
    Ответ написан
    1 комментарий
  • OpenSSL.exe встраивание в свою программу?

    @res2001
    Developer, ex-admin
    OpenSSL.exe это клиент для libssl. Вам нужно встраивать не exe, а использовать библиотеку.
    Ответ написан
    1 комментарий
  • Как настроить множественное подключение с разными пользователями?

    @res2001
    Developer, ex-admin
    Дать права на запись в нужный каталог всем пользователям из-под которых запускается скрипт.
    Чтоб пользователи не ползали в этот каталог самостоятельно - не подключайте его как сетевой диск. В программе задавайте UNC путь к каталогу для записи отчета.
    Ответ написан
  • Как в программе работает перегрузка?

    @res2001
    Developer, ex-admin
    У вас не верно перегружен operator* - он должен возвращать объект или ссылку на объект своего класса (т.е. он должен возвращать Kvadrat&): https://en.cppreference.com/w/cpp/language/operators

    Параметры передаются не в перегрузку, а в функцию или метод (перегруженные операторы частный случай метода).

    Для бинарных операторов вызывается перегруженная операция для класса, стоящего слева в выражении. Например для kvad * k - вызовется kvad.operator*(k).

    Если вы напишете k * kvad, то будет ошибка компиляции, т.к. компилятор не сможет преобразовать kvad во float. Но вы можете этому помочь, перегрузив operator float() для Kvadrat.
    Ответ написан
    Комментировать
  • Настройка IPSec средствами С++?

    @res2001
    Developer, ex-admin
    Какая ОС интересует? IPSec входит в стандарт стека TCP/IP, который предоставляется ОС. Соответственно и все API ОС зависимое.
    В винде это WFP API.
    В никсах все несколько сложнее - там задействовано как ядро ОС так и стороннее ПО. Больше подробностей можете посмотреть, например тут и тут.
    Ответ написан
    2 комментария
  • Почему две сессии OpenVPN из одной сети убивают друг друга?

    @res2001
    Developer, ex-admin
    Не приходилось сталкиваться с такой конфигурацией.
    Обычно когда надо подключить несколько клиентов из одной сети, то выделяют отдельный комп, который будет единственным клиентом ВПН, а остальные ходят через него.
    Ответ написан
  • Как посчитать количество разделителей в строке?

    @res2001
    Developer, ex-admin
    Символ крышки ^ является "специальным" для cmd. Так что его не стоит использовать в качестве разделителя, если вы планируете решать задачу на батниках.
    Вообще вашу задачу можно решить так:
    @echo off
    
    set "str=hjh#jhjh#hkjh#khkjh##khkjh"
    set "delim=#"
    set "count=0"
    
    :loop
    call:finddelims
    if defined str goto:loop
    echo.%count%
    goto:eof
    
    :finddelims
    for /f "tokens=1,* delims=%delim%" %%a in ("%str%") do (
    	echo.%%a
    	set /a "count+=1"
    	set "str=%%b"
    )

    Тут я выбрал разделителем символ #, строку задал в переменной str произвольную с разделителями.
    Двойной разделитель считается как 1. Разделитель стоящий в конце строки не учитывается.
    Ответ написан
  • Как переустановить Windows 10 удалённо без флешки и диска?

    @res2001
    Developer, ex-admin
    Подобные вещи готовятся заранее, фактически на этапе покупки компьютера - железо ПК должно поддерживать аппаратно удаленный доступ. Технологии для этого есть (IPMI, vPro), но обычно они применяются только в серверном железе, т.к. нормально стоят.
    Есть и более дешевый вариант - удаленная загрузка (PXE). Но то же требует предварительной подготовки и аппаратной поддержки.
    Чисто программные вариант - это что-то вроде ответа от Александр. Либо подготовка установочного носителя с файлом ответов для установщика, либо восстановление резервной копии, что то же требует предварительной подготовки.
    Ответ написан
  • Почему не срабатывает запись в файл?

    @res2001
    Developer, ex-admin
    если делаю: echo %pid% > pack.id
    пишет что вывод команд echo отключен.

    Это происходит когда переменная %pid% не определена (отсутствует).
    Если не вводить символы и просто нажать Enter, то вываливается "ошибка синтаксиса".

    Ошибка возникает на этой строке:
    if /i %pid_flag% EQU y
    когда переменная %pid_flag% не определена. Используйте такой вариант:
    if /i "%pid_flag%" EQU "y"
    И не ясно какого вывода в файл вы ждете?
    Если от этой команды:
    set /A pid=%pid%+1 > pack.id
    то не дождетесь - set ничего не выводит на консоль, если она выполнилась успешно.
    Ответ написан
  • Как вывести данные в таблицу с 4 столбцами?

    @res2001
    Developer, ex-admin
    for (char I = 'A', i = 'a'; I <= 'Z'; ++I, ++i) {
            cout << setw(54) << " | " << setw(4) << I << " | " << setw(13) << static_cast<int>(I) << " | ";
            cout << setw(4) << i << " | " << setw(13) << static_cast<int>(i) << " | " << endl;
    }
    Ответ написан
    Комментировать
  • Как сделать конфиг для CMD/BAT с массивом параметров?

    @res2001
    Developer, ex-admin
    Массивов в cmd нет, но можно их имитировать, генерируя имя переменной на лету:
    set "VAL_%IDX1%_%IDX2%=%VALUES%"
    где переменные IDX1 и IDX2 содержат соответствующие индексы. Вместо индексов, можно использовать,например имена полей из конфига.
    Если структура достаточно большая то переменных будет много. На мой взгляд - это какой-то тупиковый вариант.

    Еще проще: конфиг пишите в формате объявления переменных для cmd (т.е. set "Tables_2_f1_name=Id") файлу дайте расширение bat или cmd (или до запуска копируйте конфиг в bat/cmd) и просто вызывайте его как вложенный батник:
    call config.bat
    Если в конфиге не указывать команду set непосредственно, то напрямую вызвать его через call не получится, но можно в простом цикле читать конфиг построчно и подставлять в команду set.

    Возможно было бы проще на каждую строку данных из файла фильтровать конфиг с помощью findstr, в
    ыбирая нужную строку. После первой фильтрации конфиг будет закэширован и последующие фильтрации будут происходить быстрее.
    Или, если структуры меняются редко, просто зашить их в код батника.
    Ответ написан
  • Получить результат vbs (дату). Удалить файл с таким именем с помощью cmd. Как это сделать?

    @res2001
    Developer, ex-admin
    for /f "delims=" %%a in ('cscript //nologo C:\Users\Admin\Documents\123\date.vbs') do del /f /q %%a.vbs

    За подробностями: for /?
    Ответ написан
    Комментировать
  • Скрипт для удаления файлов до определенного часа в Windows?

    @res2001
    Developer, ex-admin
    Вчера отвечал на похожий вопрос, но у вас немного сложнее.
    С помощью командного файла (cmd) можно это сделать примерно следующим образом:
    Получить список файлов отсортированных в обратном порядке по времени модификации файла можно с помощью команды:
    dir /n /-c /a-d /o-d /tw *.*
    Вычислить время на час назад можно используя встроенную переменную %TIME%, которая возвращает текущее время. Переменная %DATE% - возвращает текущую дату. Не забудьте вариант смены суток. cmd не умеет работать с датой и временем, всю арифметику с датой/временем придется писать самому (выделять из %TIME% минуты и часы и производить с ними арифметические операции). Тут надо еще учесть, что числа, начинающиеся на 0 - для cmd восьмеричные и то что формат данных в %DATE% и %TIME% (и в выводе dir) зависит от установок текущей локали ОС.
    В выводе dir будет время и дата, сравниваете ее с текущей датой и вычисленным временем и если надо удаляете файл. Т.к. файлы будут отсортированы в обратном порядке по дате/времени, то после первого файла не удовлетворяющего условию можно завершать обработку.
    В помощь:
    dir /?
    for /? (ваш вариант for /f)
    set /? (для арифметики: set /a)
    Выделение подстроки из переменной описано в set /?

    В целом все можно реализовать, но вычисление даты/времени на час назад может стать не тривиальной задачей, если учитывать переход суток (а так же переход даты - дней, месяцев и годов).
    Так что, я думаю, что лучше предпочесть вариант на PoSh.
    Ответ написан
    Комментировать
  • CMD bat, как сортировать файлы в папке по дате изменения?

    @res2001
    Developer, ex-admin
    Список файлов в отсортированном в обратном порядке по дате виде можно получить с помощью команды:
    dir /a-d /o-d /b *.exe
    Вывод dir заверните в for /f и обрабатывайте только первую запись. Первая запись в выводе dir и будет имя нужного установщика.
    Ответ написан
    1 комментарий
  • Линковка с библиотекой C++?

    @res2001
    Developer, ex-admin
    mmsystem.h и winmm.lib - это стандартные виндовый заголовочный файл и библиотека, предоставляется вместе с Windows SDK, который входит в состав Visual Studio. mmsystem.h в студии доступен изначально, просто используете его в #include, копировать его в свой проект не нужно. winmm.lib то же доступен, но его надо подключить к проекту - опция -lwinmm.lib компилятора или задать в свойствах проекта как дополнительную используемую библиотеку, если используете IDE. По умолчанию она не подключена.

    Вообще для подключения сторонних библиотек к любому С/С++ проекту надо:
    1.добавить путь где лежать заголовочные файлы библиотеки опцией -I<path header files> в команду запуска компилятора.
    2.добавить путь где лежат lib файлы (lib для msvc) библиотеки в опцию -L<path to lib files>. Если библиотечный файл один, то этот пункт можно пропустить и задать полный путь в п.3. Если файлов несколько, то проще задать путь к каталогу в опции -L, а в п.3 указывать только имя конкретного файла библиотеки.
    3.добавить имя файла библиотеки (lib файла) в опцию -l<lib name> или полный путь к lib файлу.

    Если вы собираете из IDE, то те же действия надо проделать в настройках проекта. Опции компилятора практически универсальны - те же опции (и аналогичный подход) используются в msvc, gcc, clang и других компиляторах.
    По сборке библиотек с Qt проектом:
    В pro файле:
    переменная LIBS - задаются опции -L и -l компилятора (п.2 и п.3)
    переменная INCLUDEPATH - задаются опции -I компилятора (п.1)
    Например:
    INCLUDEPATH += -Ipath/to/header/files
    LIBS += -Lpath/to/lib/files -lmylibfile

    Это все легко гуглится.
    Ответ написан
    Комментировать