Все таки powershell или cmd/bat? Это разные вещи. Вы уж определитесь.
Просто напишите команды удаления файлов в нужных директориях одну за другой. Команды для начала можете отладить в консоли, выдав их в ручную. Из вашего описания проблема не ясна.
Боб Семович, Вы бы озвучили вашу задачу.
Судя по тому что вы пишете вам, видимо, нужен прокси сервер.
В ДНС кэше записи протухают, так что запись сейчас есть, через пять минут ее может не быть. Гарантий что вы получите какую-то полную информацию нет.
С какими заголовками? При чем тут браузер?
DNS и его кэш не имеет отношения к браузеру. Это низкоуровневая служба, браузер пользуется ею наравне с любыми другими сетевыми приложениями. Записи в кэше ДНС не обязательно должны быть порождены запросами от браузера. DNS оперирует только IP адресами и доменными именами, о других частях "ссылки" он ничего не знает.
kaban21, На сколько помню, у вин.сервера немного другое поведение при нехватке RDP лицензий. Он не выкидывает уже подключившихся пользователей, а выдает ошибку новому пользователю и не пускает его.
Но я уже давно не админил виндовые сервера, что-то могло поменяться.
Кстати, лицензии на RDP это отдельные лицензии. Т.е. когда вы покупаете Вин.сервер скажем со 100 клиентскими подключениями - это не RDP подключения. Для RDP нужны другие лицензии, которые покупаются отдельно. Помнится, именно лицензии на RDP достаточно легко можно было "накрутить", как сейчас - не знаю.
Энидеск и тимвивер - не используют RDP и его лицензии и подключаются к уже существующей сессии. Так что, по идее, никого не должны выкидывать. Но это не точно :-) При этом не ясно, что будет, если несколько RDP пользователей захотят использовать энидеск или тимвивер.
Shandy, Видимо у вас достаточно свежее железо, а, как я писал выше, автор давно не обновлял свой конструктор. Там, кстати, у него 2 набора, один основан на WinPE10, второй на WinPE5. Второй он обновлял в 20, а WinPE10 в 18. Если вы использовали WinPE10, можете попробовать WinPE5 (или наоборот).
Лично я не сталкивался с синим экраном при использовании adminpe.
Можете поискать другие альтернативы, которые регулярно обновляются. Они есть.
Виталий Гусев, Думал вы в курсе, что regsvr32 надо из-под админа запускать :-)
У вас же GPO, назначьте сценарий не на пользователя, а на компьютер в домене, если есть возможность. Тогда он выполнится с админскими правами. Тут я не в курсе, давно уже АД в руках не держал.
Возьмите любой конструктор для изготовления диагностической загрузочной флешки. Там обычно в составе есть инструменты для работы с реестром "удаленной" винды. Сделайте загрузочную флешку, загрузитесь с нее и импортируйте reg файл. Раньше я пользовался для подобных целей набором adminpe, но автор что-то давно не обновлял его, хотя для ваших целей он вполне сгодится. Такие конструкторы есть в интернете, погуглите.
Нужен будет, конечно, второй работающий компьютер с виндой, ну и флешка.
Borton1, Тут вопрос в приоритетах и задачах тех кто платит деньги. Если бы всегда было можно ковыряться с задачей на ассемблере столько времени сколько нужно, то и Си возможно не появился бы. Я уж не говорю о питоне и т.п. :-)
Кстати, на счет питона. На сколько я знаю тензорфлоу для питона написан на плюсах. Так что скорость он может выдавать вполне приемлемую и не факт, что у вас получится лучше и быстрее на чистых плюсах решить задачу.
В питоне, кстати, много хороших и быстрых библиотек для расчетов.
При желании можно написать собственный модуль на С/С++.
У питона свои недостатки - кривая многопоточность, например. Но это можно частично обойти при необходимости.
В общем С/С++ для чего-то быстрого и низкоуровневого. Потом это быстрое и низкоуровневое заворачивают в оболочку для использования в интерпретируемых языках и уже из них используют. Это нормальный подход во многих задачах. И это достаточно интересное направление - связка С/С++ и интерпретируемых языков.
Но есть сферы, где С/С++ в приоритете - ядра ОС, загрузчики, МК, прочий ембедед.
Виталий Гусев, Батником можно проверить есть какая-то ветка в реестре или какие-то значения. Нужно только выяснить что туда пишется при регистрации - просто поищите в реестре по имени библиотеки. СОМ объекты регистрируются в ветку HKLM/Software/Classes/CLSID.
В пользовательском разделе реестра то же есть аналогичная ветка.
Для работы с реестром из батника можно использовать команду reg: reg /?
Можно сделать по другому: каждый раз сначала удалять регистрацию и потом повторно регистрировать. Тогда возможно ошибок не будет.
Виталий Гусев, Зачем вызывать regsvr32 второй раз? Один раз зарегистрировал и хватит. Обычно это так работает.
Так же можно, например, проверять зарегистрированы ли уже объекты из comcntr или нет. И если нет, то вызывать регистрацию. Так же можно придумать что-то и при смене версий - удалять старую регистрацию и регистрировать новую библиотеку.
Borton1, Потому что производительность это не единственный критерий. На С++, а уж тем более на Си, возится с реализацией вы будете дольше, чем на питоне. Даже зная теорию и используя готовые библиотеки.
Borton1, Скажем так. Это другое программирование. В С/С++ вы ближе к железу и ОС и надо лучше понимать как оно там все работает, иначе толку не будет.
В любом случае, нет настоящего или не настоящего программирования, для каждой задачи свой инструмент. Язык - всего лишь инструмент.
Если бы вы занимались разработкой ИИ, то питон или какой-нибудь R для вас был бы самое то.
я решил использовать realloc()
Раз уж вам нравится Си, то сообщаю, что операции выделения/освобождения динамической памяти очень дорогие в плане производительности. Поэтому надо очень аккуратно с ними обращаться.
Для вашей задачи лично я бы, конечно, не стал использовать getchar и посимвольный ввод. Я бы выделил 1 большой буфер (его можно выделить на стеке в автоматическом массиве, надо учитывать что размер стека ограничен) в него читал, затем обрабатывал буфер, если нужно - повторное чтение в тот же буфер. realloc как и хранение всего ввода для вашей задачи избыточно.
mayton2019, Можно было. Но тогда не было семантики перемещения и возвращаемые объекты копировались, а это дополнительные не нужные накладные расходы. Так же не знаю, что тогда было с RVO оптимизацией, думаю, что она тогда работала хуже, чем сейчас.
Никита Савченко, Нет лучшего ответа. Это нормально. И передача параметров по ссылке и возврат объекта - вполне рабочие варианты. В разработке часто надо будет выбирать из нескольких вариантов применительно к конкретной ситуации.
В вашем конкретном варианте я бы взял или ссылки или вариант от Adamos
Если бы параметров для ввода было 100, то больше бы подошел возврат объекта, а так же вариант от Adamos :-)
Так что берите вариант от Adamos
В целом совет mayton2019 про самый простой вариант очень дельный. Всегда надо его придерживаться, если против простого варианта нет веских аргументов.
Borton1, Ну вот уже и с задачей определились :-)
Да это обработка. Можно использовать getchar в вашем случае. И вам не понадобится никакой буфер для чтения в этом случае. Вам нужно объявить int count[255] = {0};
Затем в цикле, используя getchar читаете очередной символ, этот символ будет индексом для массива. Инкрементируете соответствующий элемент массива count для подсчета символов. Переходите к чтению следующего символа. Единственный момент, видимо, надо предусмотреть возможность выхода из цикла, например, когда пользователь нажмет Enter.
После завершения цикла распечатываете все элементы массива count, которые >0.
Индекс массива - это код символа, значение элемента массива - количество символов.
В for идея правильная, но реализация кривая. Наверное надо так:
for не тестировал.