Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2022, 20:34   #21
AleksandrB00
Пользователь
 
Регистрация: 30.05.2022
Сообщений: 37
По умолчанию

И опять не работает
Код:
find: ‘Состояние’: No such file or directory
find: ‘RUNNING’: No such file or directory
Затребованная служба уже запущена.
Если дописать chcp 1251, то выдаёт следующее
Код:
Текущая кодовая страница: 1251
find: ‘RUNNING’find: :No such file or directory 
‘пїЅпїЅпїЅпїЅп\302\255ЁпїЅ’: No such file or directory
Затребованная служба уже запущена.
AleksandrB00 вне форума Ответить с цитированием
Старый 16.07.2022, 21:04   #22
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Тогда исполняйте по шагам.
  1. Код:
    SC queryex dnscache|find "Состояние"
    Должна выдать 1 строчку
    Код:
            Состояние          : 4  RUNNING
  2. Код:
    SC queryex dnscache|find "Состояние"|find "RUNNING"
    Строка тоже должна появиться
    Код:
            Состояние          : 4  RUNNING
  3. Код:
    SC queryex dnscache|find "Состояние"|find "RUNNING" > nul && echo Test
    Должна напечатать слово Test
    Код:
    >echo Test
    Test
  4. Код:
    net stop dnscache
    Служба должна остановиться. Если не останавливается, тогда попробуйте запустить cmd.exe от имени администратора.
    Сразу после этой команды (если служба остановилась) пробуем следующую команду
  5. Код:
    SC queryex dnscache|find "Состояние"|find "RUNNING"
    Должно выдать, что файл не найден. Тогда пробуем следующее
  6. Код:
    SC queryex dnscache|find "Состояние"|find "RUNNING" > nul && echo Test
    Тут ничего не должно выдать (совсем ничего).
  7. Далее проверяем, что выдает SC
    Код:
    SC queryex dnscache
    Проверяем текст, который будет выдан. Будет отлично, если вы его мне тоже пришлете.
  8. Код:
    SC queryex dnscache|find "Состояние"|find "RUNNING" > nul && echo Test
    Слова Test появиться не должно
  9. Код:
    net start dnscache
    Результат должен быть обратным команде из #4
  10. Код:
    SC queryex dnscache|find "ID_процесса"
    Должна выдать 1 строчку
    Код:
            ID_процесса        : 2280
  11. Код:
    for /F "usebackq tokens=3" %A in (`SC queryex dnscache^|find "ID_процесса"`) do echo %A
    Должно напечатать только ID - цифру
    Код:
    2280
    цифра может менять от перезапусков службы
  12. Код:
    taskkill /f /t /pid идентификатор_процесса_который_получен_от_предыдущей_команды
  13. Процесс должен умереть и потом нужно проверить состояние
    Код:
    SC queryex dnscache
  14. Остановить службу, чтобы обновить ее состояние
    Код:
    net stop dnscache
  15. А потом запустить
    Код:
    net start dnscache
  16. Число для порядку можно проверить и следующую команду
    Код:
    ping -n 4 127.0.0.1
    Она выдаст что-то вроде
    Код:
    C:\>ping -n 4 localhost
        pinging localhost [127.0.0.1] with 32 bytes of data:
        Reply from 127.0.0.1: bytes=32 time=1ms TTL=124
        Reply from 127.0.0.1: bytes=32 time=1ms TTL=124
        Reply from 127.0.0.1: bytes=32 time=1ms TTL=124
        Reply from 127.0.0.1: bytes=32 time=1ms TTL=124
    я это скопировал отсюда
    У вас результат будет по-русски
Это все должно работать через cmd.exe, а не через powershell

Последний раз редактировалось macomics; 17.07.2022 в 01:40.
macomics вне форума Ответить с цитированием
Старый 16.07.2022, 23:21   #23
AleksandrB00
Пользователь
 
Регистрация: 30.05.2022
Сообщений: 37
По умолчанию

При попытке (запущена от имени администратора)
Код:
net stop dnscache
выдаёт
Код:
Затребованная пауза, продолжение или останов службы невозможны.
Если выполнить команду
Код:
SC queryex dnscache^|find "ID_процесса"
выводит
Код:
[SC] EnumQueryServicesStatus:OpenService: ошибка: 1060:
но вот если выполнить
Код:
for /F "usebackq tokens=3" %A in (`SC queryex dnscache^|find "ID_процесса"`) do echo %A
то без вопросов выводит необходимую цифру
AleksandrB00 вне форума Ответить с цитированием
Старый 16.07.2022, 23:28   #24
AleksandrB00
Пользователь
 
Регистрация: 30.05.2022
Сообщений: 37
По умолчанию

Также интересно, а почему в cmd
Код:
SC queryex dnscache|find "Состояние"
отрабатывает нормально, а если запускать из bat файла, то выдаёт ошибку?
AleksandrB00 вне форума Ответить с цитированием
Старый 17.07.2022, 01:35   #25
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Все дело в кодировке. Русские буквы требуют, чтобы кодировка символов соблюдалась. Значит bat файл необходимо сохранять в кодировке CP866. Установите Notepad++ или Gedit/MSYS2, чтобы была возможность сохранения файлов в отличной от некоторых кодировок доступных для сохранения в стандартном Notepad

Цитата:
Сообщение от AleksandrB00 Посмотреть сообщение
Если выполнить команду
Код:
SC queryex dnscache^|find "ID_процесса"
Тут я забыл убрать ^, когда скопировал эту подстроки из for. Вот так правильно должно быть
Код:
SC queryex dnscache|find "ID_процесса"
^ это требование команды for - я тоже был об этом не в курсе сначала. Но потом прочитал об этом, когда искал синтаксис для кавычек на сайте Microsoft, ссылку на который я вам уже давал.

Последний раз редактировалось macomics; 17.07.2022 в 01:39.
macomics вне форума Ответить с цитированием
Старый 17.07.2022, 01:43   #26
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от AleksandrB00 Посмотреть сообщение
При попытке (запущена от имени администратора)
Код:
net stop dnscache
выдаёт
Код:
Затребованная пауза, продолжение или останов службы невозможны.
Для этого и составлен скрипт. Когда он прибивает процесс dnscache через
Код:
taskkill /f /t /pid <идентификатор>
тогда команда
Код:
net stop dnscache
выполнится успешно.
macomics вне форума Ответить с цитированием
Старый 17.07.2022, 10:37   #27
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Небольшое замечание к вопросу о кодовой странице.
Например, Блокнот в Win 10 формирует файл с кодовой страницей UTF-8 (после последних обновлений, смотрим в правый нижний угол Блокнота).
Можно оставить эту кодовую страницу, но прописать:
Код:
CHCP 65001 > nul
Можно выбрать "Сохранить как ..." и установить кодовую страницу, например, ANSI, для которой прописать:
Код:
CHCP 1251 > nul
И вот ещё:
При использовании в cmd скобок (круглых), полезно устанавливать настройку локали:
Код:
SETLOCAL ENABLEDELAYEDEXPANSION
а имена переменных "охватывать" не процентом (%), а восклицательным знаком (!).

PS:
1. Это только напоминание и к решению вопроса прямого отношения может и не иметь.
Как-то так, ...

Последний раз редактировалось ViktorR; 17.07.2022 в 10:39.
ViktorR вне форума Ответить с цитированием
Старый 17.07.2022, 10:51   #28
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Небольшое замечание к вопросу о кодовой странице.
Например, Блокнот в Win 10 формирует файл с кодовой страницей UTF-8 (после последних обновлений, смотрим в правый нижний угол Блокнота).
Можно оставить эту кодовую страницу, но прописать:
Код:

CHCP 65001 > nul

Можно выбрать "Сохранить как ..." и установить кодовую страницу, например, ANSI, для которой прописать:
Код:

CHCP 1251 > nul
Это повлияет только на отображение текста в консоли. А вот find при этом не найдет нужный текст.
Для find необходимо, чтобы текст с русским языком был в CP866.
Цитата:
Сообщение от AleksandrB00 Посмотреть сообщение
И опять не работает
Код:

find: ‘Состояние’: No such file or directory
find: ‘RUNNING’: No such file or directory
Затребованная служба уже запущена.

Если дописать chcp 1251, то выдаёт следующее
Код:

Текущая кодовая страница: 1251
find: ‘RUNNING’find: :No such file or directory
‘пїЅпїЅпїЅпїЅп\302\255ЁпїЅ’: No such file or directory
Затребованная служба уже запущена.
Эти ошибки вылазят как раз из-за этого. Смена кодовой страницы не помогает.

Последний раз редактировалось macomics; 17.07.2022 в 11:09.
macomics вне форума Ответить с цитированием
Старый 18.07.2022, 10:15   #29
AleksandrB00
Пользователь
 
Регистрация: 30.05.2022
Сообщений: 37
По умолчанию

В Notepad++ зашёл в кодировки-->кодировки-->Кирилица-->OEM866, всё равно при запуске пишет
Код:
Find: ‘Состояние’: No such file or directory
Find: ‘RUNNING’: No such file or directory
Затребованная служба уже запущена.
AleksandrB00 вне форума Ответить с цитированием
Старый 18.07.2022, 13:16   #30
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

У меня команда find, правда под wine, работает по другому.
Что именно вы запускаете и где? Пришлите сам файл (прикрепите как файл).

Последний раз редактировалось macomics; 18.07.2022 в 14:29.
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт/Подмена DLL (Brain->Вынос) coNsept Общие вопросы C/C++ 1 26.07.2011 01:53
Kaspersky 7.0.0.125 tsergey Безопасность, Шифрование 2 27.02.2009 11:54
Kaspersky Elm0 Свободное общение 11 05.06.2007 11:29