Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31

Выполнение команды после завершения предыдущей с привязкой к файлу

25.03.2018, 15:13. Показов 5908. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос может показаться не по теме, но немного терпения. Имеется команда декомпилирования файла.chm из контекстного меню:

@=""C:\\Program Files (x86)\\htm2chm\\htm2chm.exe" -decompile "%L""

Необходимо ее расширить так, чтобы декомпилированый файл "подхватывался" программой winword.exe и открывался в его окне для последующей обработки. Пробовал менять команду - не катит:

@="wait "C:\\Program Files (x86)\\htm2chm\\htm2chm.exe" -decompile "%L" start "C:\\Program Files (x86)\\Microsoft Office\\Office12\\WINWORD.EXE"""

Пробовал через bat-файл:

Windows Batch file
1
2
3
@echo off
start "" /wait "C:\\Program Files (x86)\\htm2chm\\htm2chm.exe" -decompile "%L" 
start "" "C:\\Program Files (x86)\\Microsoft Office\\Office12\\WINWORD.EXE"
работает, но без привязки к файлу (пустой), по привязкам и отслеживанию я не силен

т.е. задача bat сводится к следующему:
1. декомпилирование файла .chm программой htm2chm.exe (желательно из CM)
2. после декомпилирования, открытие этого же файла в winword (или любом другом редакторе)

а как bat "прикрутить" к СМ я сам разберусь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2018, 15:13
Ответы с готовыми решениями:

Выполнение следующей команды только после завершения предыдущей
Здравствуйте. При выполнении команд "start winrar", "copy", "del" в bat файле происходит следующее: Архив создаётся 5 секунд и за это...

Выполнения команды после завершения предыдущей
Добрый день, Требуется выполнить команду rmdir после завершения удаления программы. Переменная %comspec% с ключом /c сообщает,что надо...

Выполнение команды после завершения цикла
void __fastcall TForm3::Button3Click(TObject *Sender) { /* 16. Из заданного списка слов удалить слова, содержащие заданную...

26
Джоуи
 Аватар для Joey
1083 / 645 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
25.03.2018, 17:49
Цитата Сообщение от zdarg Посмотреть сообщение
после декомпилирования, открытие этого же файла
А каким получается выходное имя файла? И в какую папку htm2chm декомпилирует? Туда же, где исходный и с таким же именем?

Добавлено через 3 минуты
Windows Batch file
1
start "" "C:\\Program Files (x86)\\Microsoft Office\\Office12\\WINWORD.EXE" "имя_файла"
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
26.03.2018, 00:38
Цитата Сообщение от zdarg Посмотреть сообщение
из контекстного меню
из контекстного меню чего? И как и чем передается туда переменная %L ? Скиньте reg в архиве или полный код, если из него формируется запись в реестр.
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
26.03.2018, 15:05  [ТС]
цитата: А каким получается выходное имя файла? И в какую папку htm2chm декомпилирует? Туда же, где исходный и с таким же именем?

Извиняюсь за задержку. Работа...

декомпилированный файл html с папкой .files создается в подпапке родительской папки файла.chm с тем же самым названием (и подпапок и файла). А полная команда из CM:

Code
1
2
3
4
5
6
7
8
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.chm\shell\{0835501e-ad5d-44e8-8967-bf354ae84670}]
@="Разобрать"
"CommandManager"="Context Menu Tuner"
"Icon"="C:\\Program Files (x86)\\htm2chm\\htm2chm.exe,0"
"Position"="Top"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.chm\shell\{0835501e-ad5d-44e8-8967-bf354ae84670}\command]
@=""C:\\Program Files (x86)\\htm2chm\\htm2chm.exe" -decompile "%L""
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
26.03.2018, 15:22  [ТС]
А полный reg-файл (для других типов файлов и других задач) вот:
Вложения
Тип файла: rar all.rar (1.0 Кб, 4 просмотров)
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
26.03.2018, 16:45  [ТС]
Цитата Сообщение от Joey Посмотреть сообщение
start "" "C:\\Program Files (x86)\\Microsoft Office\\Office12\\WINWORD.EXE" "имя_файла"
не подходит... WINWORD.EXE будет открывать строго указанный (по имени) файл, независимо от родительского файла.chm.
А нужно, чтобы он "подхватывал" ЛЮБОЙ выбранный в данный момент файл, декомпилируемый программой htm2chm.exe.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
27.03.2018, 01:36
Цитата Сообщение от zdarg Посмотреть сообщение
\\htm2chm.exe" -decompile "%L""
что это такое и где вы нашли консольный вариант, не могу синтаксис нигде посмотреть
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
27.03.2018, 15:09  [ТС]
Дополнительный консольный вариант и интеграцию в проводник имеет сама программа, но только для XP. Для 7-ки пришлось вытягивать все ручками (по крайней мере у меня на 7-ке не интегрировалась). Команды взял из .ini самой программы, можете посмотреть вложение:

но мы уходим от сути вопроса! Мне важно, чтобы по окончании выполнения задачи декомпилирования любого файла .chm программой htm2chm.exe (и уже независимо, из КМ, или из меню самой программы, иначе залезем в "дебри"), просто этот, уже декомпилированый файл автоматом открывался в WINWORD.EXE (или любом другом указанном редакторе). Сама программа htm2chm работает так:
x:\...\любая папка с .chm\любой выбранный.chm - правой кнопкой, либо "открыть" из меню htm2chm -> всплывающее окно -> декомпилировать -> OK
после нажатия OK программа htm2chm закрывает все свои окна, (если были открыты дополнительные), т.е. завершает свой процесс, и после этого сразу открывается окно авто-созданной подпапки (в папке "любая папка с .chm") с именем выбранного .chm, где уже находится файл HTML с тем же именем что и .chm и папка.files с тем же именем. И теперь просто нужно открыть этот html WINWORD'e автоматом. Кажется элементарно просто. Но не силен в этих "динамических переходах".
Вложения
Тип файла: rar htm2chm_all.rar (2.30 Мб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
27.03.2018, 15:28  [ТС]
думаю на видео наглядней:
Вложения
Тип файла: rar 2018-03-27_152212.rar (4.04 Мб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
27.03.2018, 21:41  [ТС]
А вообще-то наверно задачу правильней сформулировать будет так:
передача произвольно-открытого файла (или может процесса) от одной программы, к другой, по завершению первой.
Уже "гуглю" , но чувствую - "ларец" открывается просто, но как?! .

Добавлено через 34 минуты
идея такая:

Code
1
2
3
4
public static Process Start(C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE -null.html
    string null.chm,
    string htm2chm.exe -decompile "%L",
    string null.html,
но как это будет в bat?

Добавлено через 5 часов 11 минут
"Увы, не хватает базовых знаний", - изрек пожилой юзер с закипевшими мозгами...
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
28.03.2018, 03:08
Цитата Сообщение от zdarg Посмотреть сообщение
окно авто-созданной подпапки
Цитата Сообщение от zdarg Посмотреть сообщение
где уже находится файл HTML с тем же именем
тогда:
Windows Batch file
1
2
3
находимся в какой-то папке или cd /d "C:\Papka"
выполнение команд декомпилирования htm2chm для файла, например: name.txt
if exist "подпапка\name.html" start "" "C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE" "подпапка\name.html"
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
28.03.2018, 13:11  [ТС]
Счастье, это когда тебя понимают. Выходит, я - глубоко несчастный человек... Попытаюсь объяснить еще раз суть проблемы. В ваших примерах WINWORD.EXE всегда будет открывать строго один и тот же файл (при его наличии), с именем, указанным в команде (name.html), независимо от имени выбранного программой htm2chm файла .chm !!! :

vasya_pupcin.chm -> htm2chm -> vasya_pupcin(subfolder) -> vasya_pupcin.html -> WINWORD.EXE -> vasya_pupcin(subfolder)\vasya_pupcin.htm l

а если я выберу yura_pupcin.chm -> htm2chm -> yura_pupcin(subfolder) -> yura_pupcin.html -> то все равно WINWORD будет хотеть открыть "vasyu". Это даже и мне элементарно понятно... (разовая команда выполнил-выкинул, зачем?)

А нужно, чтобы WINWORD открывал любой, только что созданный программой htm2chm файл.html (результат обработки ею выбранного файла.chm), без привязки к конкретному имени файла. Это наверно надо решать как-то через передачу данных от одного процесса к другому. На что у меня не хватает знаний. Почему и обратился на ваш форум.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
28.03.2018, 16:57
Цитата Сообщение от zdarg Посмотреть сообщение
чтобы WINWORD открывал любой, только что созданный
а сразу нельзя было так поставить задачу, еще обижаются
откроется в wordе последниий созданный html в подпапке
Windows Batch file
1
dir /a-d/b/o-d/tc "подпапка\*.html"|set /p file=^& cmd /v/c start "" "C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE" "подпапка\!file!"
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
29.03.2018, 12:28  [ТС]
Извините. Не сердитесь на старика... Спасибо, но данный код также не решает проблему. Здесь привязка к имени подпапки, где создается файл.html. Та же разовая команда. У меня на компьютере (как и у большинства) десятки, а может сотни файлов .chm (файлы справок, описаний, книг в конце-концов), и я хотел, чтобы при открытии (программой htm2chm) любого из них, в любом месте, с любым названием (именем), после выполнения программой htm2chm задачи над открытым файлом .chm и создания ею результирующего файла html, этот файл html автоматически открывался в WINWORD'e. Да не сложно самому выделить его руками, кнопками мыши, чтобы потом выбрать WINWORD и открыть, наконец, этот ... файл в WINWORD'e, или использовать другую программу для работы с chm-файлами (их туча, тем более комплексных). Но я хотел htm2chm и думал, что это простая задача. Крайний вопрос. А какой командой можно "подхватить" новый процесс? Поясню: если в настройках параметров папок поставить "запускать окна с папками в отдельном процессе", то как я понимаю для вновь открытой папки создается отдельный процесс, а htm2chm как раз это и делает - она завершает саму себя, одновременно запуская новый процесс открытия созданной ею папки! И вот если бы этот процесс заставить запустить WINWORD, и чтобы WINWORD открыл файл html, находящийся в этой вновь открытой папке. Идея? Вполне. Пойду "лопатить" литературу...

Добавлено через 35 минут
Еще раз прошу прощения за некорректное определение темы. Должен был назвать так: Выполнение команды после завершения предыдущей с привязкой к процессу (или новому запущенному процессу).
0
 Аватар для bidstrup
419 / 179 / 27
Регистрация: 11.03.2018
Сообщений: 771
29.03.2018, 13:23
имя аргумента, переданного в bat-файл механизмом контекстного меню, содержит bat-переменная %1
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.03.2018, 15:20
Цитата Сообщение от bidstrup Посмотреть сообщение
содержит bat-переменная %1
угу, но решение не на раз два.

zdarg
htm2chm.exe, а также папку "Bat" из архива, бросить в System32 системы
применить рег из архива, в к. меню (ПКМ на файле) должен появляться пункт "chm => html"
при тапе по этому пункту будет запускаться Name.bat из папки "Bat"
в bat команда на преобразование взятого файла и команда на поиск одноименного файла по дереву текущей папки (мы будем находится в папке с взятым файлом и она будет текущей) и сразу запуск его в работу в worde
отдельно код повторю здесь:
Windows Batch file
1
2
3
4
5
@echo off
cd /d "%~dp1"
htm2chm.exe -decompile "%~1"
for /f "delims=" %%a in ('dir /a-d/b/s^|find "%~n1.html"') do start "" "C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE" "%%a"
pause
архив с файлами:
chm_htm.7z
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
30.03.2018, 16:53  [ТС]
Цитата Сообщение от bidstrup Посмотреть сообщение
имя аргумента, переданного в bat-файл механизмом контекстного меню, содержит bat-переменная %1
поясните пожалуйста...

Добавлено через 1 час 50 минут
Увы, Ваши командные и reg-файлы не работают (во всех случаях в winword'e открывается пустой файл).
Единственно, к чему я пришел, что нижеприведенный простой код:

Windows Batch file
1
2
start "" /wait "C:\\Program Files (x86)\\htm2chm\\htm2chm.exe" -decompile "%L"
start "" "C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE" *.htm
прекрасно работает, но! только при условии, если бы программа htm2chm.exe создавала файл html (htm) в родительской папке обрабатываемого файла.chm, но она создает его в подпапке родительской папки (данные настройки программы изменить нельзя). А как указать winword'у эту подпапку, без привязки к имени, я не знаю. Извините, я Вас уже утомил. Бог с ней, с этой идеей, на сим и закончим. Спасибо.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
30.03.2018, 21:53
Цитата Сообщение от zdarg Посмотреть сообщение
Увы, Ваши командные и reg-файлы не работают
да что вы говорите, мои и меня - работают, а у вас только вам известно, что вы и как делаете.
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 31
02.04.2018, 10:26  [ТС]
Здравствуйте. Код сработал, но недолго... В моем случае в коде пришлось поменять ...html на ...htm. Но файл.chm декомпилируется и открывается в ворде один раз. При попытке открыть другой файл, открывается снова первый, или же опять пустой (если полностью удалить следы первого). Погрешил на систему, переустановил ось, проделал снова все на свежеустановленной (Windows 7 Ult. x64 Sp1) - эффект повторился. Сделал вывод: написание красивого рабочего кода - большой "ге-рой". Но все равно спасибо, расширил познания по синтаксису.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
02.04.2018, 10:48
zdarg,
а вы какой код используете, тот что в архиве или непосредственно в п16, коды разные, попробуйте второй
если создается файл htm, а не html, то в коде это тоже надо указать: dir /a-d/b/s^|find "%~n1.htm"

Добавлено через 4 минуты
и покажите мне папку в которой подпапка с файлом html, сколько там может быть файлов и какие примерно их имена. Постоянное ли всегда имя подпапки
просто кодом:
Windows Batch file
1
start "" "C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE" "файл.html"
без проблем открывается в worde файл или тоже бывает пустая страница?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2018, 10:48
Помогаю со студенческими работами здесь

Выполнение команды после завершения процесса (программы)
Необходимо наладить резервное копирование базы данных после завершения приложения, но что то не работает... CHCP 1251 START...

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

Запуск функции после завершения предыдущей
Подскажите, как можно реализовать в таком алгоритме запуск функции после завершения предыдущей? for(var key in ipDev) { ...

Запуск функции после завершения предыдущей
Знаю что такие темы уже были и гугл не помог ( Есть две функции посимвольного вывода текста function show() { ...

Анимация объекта, после завершения предыдущей анимации
Доброго времени суток, есть простой код который запускает анимацию: $(function(){ $('#conect_block').click(function(){...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru