Как прервать выполнение команды в командной строке
Перейти к содержимому

Как прервать выполнение команды в командной строке

  • автор:

Как прервать выполнение команды их командной строки?

Форумы CADUser → Autodesk → AutoCAD → Как прервать выполнение команды их командной строки?

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 18

#1 Тема от SStas 5 октября 2005г. 10:46:54

Тема: Как прервать выполнение команды их командной строки?

Существует ли какая-то возможность прервать команду (как при нажатии «Esc») с помощью ввода чего-либо в командную строку?
Мне это нужно, чтобы вставлять большой массив команд из текстового файла непосредственно в Автокад и иногда требуется прерывать текущую команду (например, чтобы закончить выполнение команды ТЕКСТ)

#2 Ответ от Jura 5 октября 2005г. 11:29:57

Re: Как прервать выполнение команды их командной строки?

Что должно посылать Abort? (Lisp, рука пользователя)
Если из Lisp — (quit) или (exit), но для command вылет идет из программы Lisp, а не только из Command, для VL-CMDF кажись вылет только из текущей command, Lisp программа продолжается.

#3 Ответ от SStas 5 октября 2005г. 12:51:56

Re: Как прервать выполнение команды их командной строки?

Не Lisp, просто команда.
В текстовом файле забита куча команд, которые потом из буфера обмена вставляются в командную строку Автокада и построчно выполняются.
Необходимо, в этом же файле указать, что необходимо прервать текущую команду и выполнять ту, что идёт дальше.
На данный момент это нужно только для того, чтобы прервать команду ТЕКСТ, указав, что команда текст завершена.

#4 Ответ от kpblc 5 октября 2005г. 14:02:34

Re: Как прервать выполнение команды их командной строки?

Я так понимаю, что это скрипт. По поводу скриптов и работы с ними лучше всего ИМХО описано у В.Света «AutoCAD Язык макрокоманд и создание кнопок». Если пришлешь весь скрипт (только запакуй его), попробую нарисовать лисп.

#5 Ответ от Jura 5 октября 2005г. 14:14:15

Re: Как прервать выполнение команды их командной строки?

«Пустой ввод» — пустая строка (Hex0D0A)

#6 Ответ от Jura 5 октября 2005г. 14:17:23

Re: Как прервать выполнение команды их командной строки?

PS обычно используется пробел, но в команде TEXT, на шаге ввода «текста», пробел воспринимается не как «пустой ввод»(управляющий символ), а как рядовой символ текста, поэтому придется в «текстовом файле» добавлять пустую строку.

#7 Ответ от Владимир Громов 5 октября 2005г. 14:19:30

Re: Как прервать выполнение команды их командной строки?

> kpblc
Но ведь скрипт не надо запускать через буфер обмена. Он ведь запускается командой «_script» («пакет»). И такой текст:
_line
_redraw
_dtext
как можно понять из этой фразы:

В текстовом файле забита куча команд, которые потом из буфера обмена вставляются в командную строку Автокада и построчно выполняются.

вряд ли имеет смысл. Неплохо было бы увидеть хоть фрагмент этого текстового файла.

#8 Ответ от kpblc 5 октября 2005г. 14:32:01

Re: Как прервать выполнение команды их командной строки?

Ну да, неправильно выразился. Лично мне скрипты не подошли никаким боком, так что я их не помню, поскольку не пользуюсь. Почему и попросил текст — для лиспа. Там имхо возможностей поболее будет.

#9 Ответ от SStas 6 октября 2005г. 11:02:51

Re: Как прервать выполнение команды их командной строки?

Хорошо, вот фрагмент:

_point 1784.321,859.000,0.000 _DTEXT 1784.321,859.000,0.000 1 _point 1784.316,852.514,34.926 _DTEXT 1784.316,852.514,34.926 2

Необходимо, чтобы после числа в тексте шло прерывание команды _dtext.
Наверняка это можно сделать макросом или скриптом, но писать я их не умею. Есть куча координат в текстовом виде, необходимо в данной координате поставить точку и написать её номер.

#10 Ответ от kpblc 6 октября 2005г. 12:07:11

Re: Как прервать выполнение команды их командной строки?

Если без проверки, то примерно так:

;; Сохранение состояния системных переменных (defun lib:error-save-sysvar (sysvar-list) (foreach item sysvar-list (setq *kpblc-sysvar-list* (cons (list (car item) (getvar (car item))) *kpblc-sysvar-list* ) ;_ end of cons ) ;_ end of setq (if (cadr item) ; передано устанавливаемое значение (setvar (car item) (cadr item)) ) ;_ end of if ) ;_ end of foreach ) ;_ end of defun ;; Восстановление состояния системных переменных (defun lib:error-restore-sysvar () (if *kpblc-sysvar-list* (foreach item *kpblc-sysvar-list* (setvar (car item) (cadr item)) ) ;_ end of foreach ) ;_ end of if (setq *kpblc-sysvar-list* nil) (princ) ) ;_ end of defun ;; получение координат точек. Возвращает список координат (defun lib:point-get-coord (string / x y z) (setq x (atof (substr string 1 (vl-string-search "," string))) string (substr string (+ 2 (vl-string-search "," string)) (strlen string)) y (atof (substr string 1 (vl-string-search "," string))) z (atof (substr string (+ 2 (vl-string-search "," string)) (strlen string))) ) ;_ end of setq (list x y z) ) ;_ end of defun ;; Получение значения dxf-кода для примитива (defun lib:ent-get-dxf-data (ent dxf) (cond ((= (type ent) 'ename) (setq ent (entget ent))) ((= (type ent) 'vla-objec) (setq ent (vlax-vla-object->ename ent))) ) ;_ end of cond (cdr (assoc dxf (ent))) ) ;_ end of defun ;; Последовательное чтение файла. Возвращает список точек (defun lib:read-file (file-name / file_handle file_string result) (if (setq file_handle (open file-name "r")) (progn (while (and (setq file_string (vl-string-trim " " (read-line file_hadle))) (not (vl-string-search "," file_string)) ) ;_ end of and (setq result (append result (lib:point-get-coord file_string))) (reverse result) ) ;_ end of while ) ;_ end of progn ) ;_ end of if ) ;_ end of defun ;; Создание точек ;; Параметры: file-name текстовое имя файла ;; autonum автоматически нумеровать (t) или нет (nil) ;; В случае автоматической нумерации используется выравнивание Left (defun _kpblc-make-points (file-name autonum text-height / point_list counter) (setq point_list (lib:read-file file-name) counter 0 ) ;_ end of setq (foreach item poitn_list (setq couter (1+ counter)) (command "_.point" item) (if autonum (progn ; Ведется автонумерация (if (= (cdr (assoc 40 (tblsearch "textstyle" (getvar "textstyle")))) 0.0) (command "_.dtext" "_j" "_mc" item text-height 0.0 (itoa counter)) (command "_.dtext" item 0.0 (itoa counter)) ) ;_ end of if ) ;_ end of progn (progn ; Автонумерации нет (command "_.dtext") (while (/= (getvar "cmdactive") 0) (command pause) ) ;_ end of while ) ;_ end of progn ) ;_ end of if ) ;_ end of foreach ) ;_ end of defun (defun mk-point (/ file_name _answer_ text_height) ;; Локальные функции (defun *error* (msg) (princ msg) (lib:error-restore-sysvar) ) ;_ end of defun ;; Конец локальных функций (lib:error-save-sysvar '(("osmode" 0))) (setq file_name (getstring "\nВведите имя файла : ")) (initget "Да Нет _ Yes No") (setq _answer_ (getkword "\nВыполнять автоматическую нумерацию [Да/Нет] ? : " ) ;_ end of getkword ) ;_ end of setq (setq _answer_ (= _answer_ "Yes")) (if (= (lib:ent-get-dxf-data (tblsearch "style" (getvar "textstyle")) 40) 0.0) (progn (setq text_height (getreal "\nВведите высоту текста для нумерации :") ) ;_ end of setq (if (not text_height) (setq text_height 2.5) ) ;_ end of if ) ;_ end of progn (setq text_height (lib:ent-get-dxf-data (tblsearch "style" (getvar "textstyle")) 40 ) ;_ end of lib:ent-get-dxf-data ) ;_ end of setq ) ;_ end of if (_kpblc-make-points file_name _answer_ text_height) (lib:error-restore-sysvar) ) ;_ end of defun

#11 Ответ от kpblc 6 октября 2005г. 12:40:05

Re: Как прервать выполнение команды их командной строки?

Ох, елки-моталки, кое-что надо поменять:
1. Выравнивание не Left, а Middle Center — оно попроще.
2. Слетело форматирование на одной строке. Вроде сейчас должно быть нормально:

;; Сохранение состояния системных переменных (defun lib:error-save-sysvar (sysvar-list) (foreach item sysvar-list (setq *kpblc-sysvar-list* (cons (list (car item) (getvar (car item))) *kpblc-sysvar-list* ) ;_ end of cons ) ;_ end of setq (if (cadr item) ; передано устанавливаемое значение (setvar (car item) (cadr item)) ) ;_ end of if ) ;_ end of foreach ) ;_ end of defun ;; Восстановление состояния системных переменных (defun lib:error-restore-sysvar () (if *kpblc-sysvar-list* (foreach item *kpblc-sysvar-list* (setvar (car item) (cadr item)) ) ;_ end of foreach ) ;_ end of if (setq *kpblc-sysvar-list* nil) (princ) ) ;_ end of defun ;; получение координат точек. Возвращает список координат (defun lib:point-get-coord (string / x y z) (setq x (atof (substr string 1 (vl-string-search "," string))) string (substr string (+ 2 (vl-string-search "," string)) (strlen string)) y (atof (substr string 1 (vl-string-search "," string))) z (atof (substr string (+ 2 (vl-string-search "," string)) (strlen string))) ) ;_ end of setq (list x y z) ) ;_ end of defun ;; Получение значения dxf-кода для примитива (defun lib:ent-get-dxf-data (ent dxf) (cond ((= (type ent) 'ename) (setq ent (entget ent))) ((= (type ent) 'vla-objec) (setq ent (vlax-vla-object->ename ent))) ) ;_ end of cond (cdr (assoc dxf (ent))) ) ;_ end of defun ;; Последовательное чтение файла. Возвращает список точек (defun lib:read-file (file-name / file_handle file_string result) (if (setq file_handle (open file-name "r")) (progn (while (and (setq file_string (vl-string-trim " " (read-line file_hadle))) (not (vl-string-search "," file_string)) ) ;_ end of and (setq result (append result (lib:point-get-coord file_string))) (reverse result) ) ;_ end of while ) ;_ end of progn ) ;_ end of if ) ;_ end of defun ;; Создание точек ;; Параметры: file-name текстовое имя файла ;; autonum автоматически нумеровать (t) или нет (nil) ;; В случае автоматической нумерации используется выравнивание Left (defun _kpblc-make-points (file-name autonum text-height / point_list counter) (setq point_list (lib:read-file file-name) counter 0 ) ;_ end of setq (foreach item poitn_list (setq couter (1+ counter)) (command "_.point" item) (if autonum (progn ; Ведется автонумерация (if (= (cdr (assoc 40 (tblsearch "textstyle" (getvar "textstyle")))) 0.0) (command "_.dtext" "_j" "_mc" item text-height 0.0 (itoa counter)) (command "_.dtext" item 0.0 (itoa counter)) ) ;_ end of if ) ;_ end of progn (progn ; Автонумерации нет (command "_.dtext") (while (/= (getvar "cmdactive") 0) (command pause) ) ;_ end of while ) ;_ end of progn ) ;_ end of if ) ;_ end of foreach ) ;_ end of defun (defun mk-point (/ file_name _answer_ text_height) ;; Локальные функции (defun *error* (msg) (princ msg) (lib:error-restore-sysvar) ) ;_ end of defun ;; Конец локальных функций (lib:error-save-sysvar '(("osmode" 0))) (setq file_name (getstring "\nВведите имя файла : ")) (initget "Да Нет _ Yes No") (setq _answer_ [b](getkword "\nВыполнять автоматическую нумерацию [Да/Нет] ? : "[/b] ) ;_ end of getkword ) ;_ end of setq (setq _answer_ (= _answer_ "Yes")) (if (= (lib:ent-get-dxf-data (tblsearch "style" (getvar "textstyle")) 40) 0.0) (progn (setq text_height [b](getreal "\nВведите высоту текста для нумерации :")[/b] ) ;_ end of setq (if (not text_height) (setq text_height 2.5) ) ;_ end of if ) ;_ end of progn (setq text_height (lib:ent-get-dxf-data (tblsearch "style" (getvar "textstyle")) 40 ) ;_ end of lib:ent-get-dxf-data ) ;_ end of setq ) ;_ end of if (_kpblc-make-points file_name _answer_ text_height) (lib:error-restore-sysvar) ) ;_ end of defun

Выделенные строки должны быть в одну строку.

Windows cmd. Прервать выполнение программы

В винде всё через *адницу.
Ctrl+C работать вроде как и должно, но это же винда.

Можно как вариант открыть второй cmd и прибить выполняемый процесс чем-то вроде
taskkill /IM program.exe

Остальные ответы
Эмм. В винде ctrl+c это копировать, а ctrl+v вставить.
dhfgj fgjfgjУченик (105) 6 лет назад
Илья ЛукьяновОракул (76499) 6 лет назад
Александр СударевЗнаток (331) 3 года назад
Вот это Гуру))))
dhfgj fgjfgjУченик (105) 6 лет назад
Мне не надо закрывать само окно. Только процесс прервать
Аметист. Профи (645) dhfgj fgjfgj, выдели любую часть текста
Ctrl+C должно работать.
выдели любую часть текста
Похожие вопросы
Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Как остановить результат командной строки

Здравствуйте.
Подскажите — как остановить результат командной строки ?

Я запускаю от имени администратора bat-файл — тут же мелькает черное окно, которое моментально закрывается и я не успеваю рассмотреть что там написано.

Подскажите — как хотя бы секунды на две или три — остановить это окно, чтобы хотя бы прочитать — что там написано ?

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как остановить результат командной строки?
Не знаю так должно быть или нет? Ввожу в командную строку "netstat -s -p tcp udp" — он там что то.

Считать результат с командной строки
Нужно выполнить команду в командной строке и считать результат без создания временных файлов .

Считать результат с командной строки
С помощью дефи открываю командную сторку и вписываю туда комаду, но бывает, что она не.

Как задать переменной результат действия команды в командной строке
Ребят, подскажите, не могу вкурить, как задать переменной результат действия команды в командной.

Эксперт HardwareЭксперт Windows

15852 / 7884 / 745
Регистрация: 03.01.2012
Сообщений: 32,663

bazanski, Гм. Для вас содержимое запускаемого файла является тайной? А не пробовали запустить любую прогу, пишущую видео с рабочего стола, а потом просмотреть это видео покадрово?
Ещё вариант: утилита PSR

как прервать выполнение команды в linux bash?

сразу скажу: команды timeout нету и нет возможности её установить =( например запускаю top или иную другую, которая непрерывно выводит данные , и хочу чтобы через секунду или тут же по получению данных без участия ctrl+c или ctrl+z или иных действий с клавиатуры команда делал одиночный вывод и прекращала свою работу

Отслеживать
задан 9 янв 2018 в 10:15
97 1 1 серебряный знак 6 6 бронзовых знаков
вместо top можно использовать ps или запустить top в batch режиме ( top -b или top -n 1 ).
9 янв 2018 в 10:22

top я для примера привел. увы, у меня есть команда, которая выводит одну строку непрерывно, никаких иных параметров нету . =( прервать её можно только по ctrl+c и все. а надо запустить программу и через секунду выйти обратно в шелл =(

9 янв 2018 в 10:27

man timeout : sudo apt-get install timeout; timeout 10 ping google.com Ну и свои велосипеды: mywiki.wooledge.org/BashFAQ/068

12 янв 2018 в 1:52

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Если что, всегда можно попробовать скопировать timeout с подходящей системы или написать свой на баше/перле. На SO есть ряд примеров. Вот самый маленький

#!/bin/sh ( your_command ) & pid=$! ( sleep $TIMEOUT && kill -HUP $pid ) 2>/dev/null & watcher=$! wait $pid 2>/dev/null && pkill -HUP -P $watcher 

Если имя программы точно известно, то можно даже так

(sleep 3 && killall program) & ./program 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *