|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.12.2009, 10:44 | #1 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Можно ли закрыть папку Explorer из bat-файла?
Подскажите, уважаемые профессионалы!
Текст bat-файла ниже: @echo off rem данный bat-файл располагается в произвольном месте ПК rem в папке с именем, например, SetCalc и выполняет следующее: rem создает на рабочем столе папку Mik и файл Calc_MKS.xls в ней MD "%USERPROFILE%\DESKTOP\Mik" @echo .>"%USERPROFILE%\DESKTOP\Mik\Calc_M KS.xls" rem сохраняет адрес исходной папки SetCalc, откуда запущен bat-файл PUSHD %CD% rem открывает вновь созданную папку Mik @explorer /e, /root, %USERPROFILE%\Desktop\Mik rem открывает новый файл Calc_MKS.xls @CD /d "%USERPROFILE%\DESKTOP\Mik" @start Calc_MKS.xls rem восстановление адреса исходной папки SetCalc, откуда запускался bat-файл POPD rem вот этот адрес: echo %CD% pause rem теперь исходную папку SetCalc надо закрыть rem ?? exit %CD% - не реагирует, можно ли это сделать в принципе? rem или хотя бы закрыть любую открытую папку explorer.exe exit |
28.12.2009, 11:11 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Вам же файл надо только файл открыть... Я плохо знаком с синтаксисом BAT-файлов, поэтому могу предложить только скрипт VBS. Сохраните этот код в файл с именем 1.vbs, и запустите его двойным щелчком мыши: Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 28.12.2009 в 11:21. |
|
28.12.2009, 12:30 | #3 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Спасибо, EducatedFool! Попробовал Ваш вариант, папка и файл без проблем создаются, файл открывается, причем все куда эффектней, чем из батника...
К сожалению, это только кусочек надобности... У меня следующая задача: - есть установочная папка SetCalc (в штатном варианте расположена на CD, но может располагаться и в любом другом месте), которая содержит файл надстройки *.xla, файл со стартовыми данными для надстройки *.txt, а также файлы инсталляции и деинсталляции, с которыми и вожусь - пользователь открывает эту папку, запускает файл инсталляции, после чего: 1 Файл надстройки копируется в AddIns (в разных версиях Excel - свой путь), что автоматом включает надстройку в коллекцию, не требуя при этом включения макросов 2 На рабочем столе появляеся папка Mik, в которую копируется файл *.txt с данными, создается новый "чистый" файл Calc_MKS.xls, этот файл и сама папка открываются (если не открыть папку - ее теряют, т.к. у многих рабочий стол - мозаика из папок), а исходную папку хотелось бы закрыть, чтобы глаза не мозолила больше (норовят почему-то запустить файл надстройки оттуда, хотя он у меня запрещен для пуска при включенных макросах) 3 Надстройка доступна для пуска только из файла Calc_MKS.xls После ее инсталляции (галочка) в меню появляется новая строка для пуска. Ну и все это должно работать для разных ОС начиная с NT и для версий Excel с 2003 SP3 и старше Ваша программа интуитивно понятна, хотя детали синтаксиса непривычны. И все-таки из VBS папку explorer-а можно закрыть? |
28.12.2009, 12:46 | #4 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
В дополнение
Вообще-то с использованием переменной окружения путь к папке AddIns одинаков для всех версий Excel: if not exist "%APPDATA%\Microsoft\AddIns" goto error copy calc_MKS.xla "%APPDATA%\Microsoft\AddIns" >nul - - - goto exit :error echo :exit |
28.12.2009, 15:20 | #5 | |||||||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Хотя я рекомендовал бы использовать бесплатную программу Inno Setup - она сама скопирует нужные файлы в нужные папки. Цитата:
Его несложно получить средствами VBS - одна строка кода. Цитата:
Цитата:
С Вистой и 7-кой могут возникнуть сложности - зависит от настроек безопасности ОС. Проблемы могут возникнуть из-за антивирусов - но тут тоже надо проверять. Цитата:
Путь надо читать из реестра - а вдруг пользователь переименует папку, или переместит её? Вспомните хотя бы свою строку "%USERPROFILE%\DESKTOP\Mik" - работать она будет только на англоязычных системах, ибо папка Рабочий стол в разных локализациях ОС называется по-разному. Именно поэтому я взял путь к ней из реестра: CreateObject("WScript.Shell").Speci alFolders("Desktop") Короче, я рекомендую такой вариант: 1) Создаёте инсталлятор при помощи Inno Setup (который будет отображать стандартный мастер установки программы) 2) подготавливаете все Ваши файлы (exe-файл - инсталлятор, надстройку, VBS - скрипт, файлы TXT, и т.п.), и помещаете все это в одну папку 3) Создаёте SFX-архив из этой папки при помощи WinRAR (получается обычный exe-файл с выбранной Вами иконкой, который при запуске без лишних вопросов распаковывает ВСЕ упакованные в него файлы во временную папку, и запускает выбранный Вами exe-файл - инсталлятор) Как это все будет работать: 1) Пользователь запускает SFX - ничего не видит (в это время файлы распаковываются с CD во временную папку на жестком диске) 2) Автоматически запускается инсталлятор - пользователь проходит все шаги установки программы (с выбором папок, ярлыков, и т.д. и т.п.) Инсталлятор сам скопирует нужные файлы в нужные места, при этом найдет (или создаст) все необходимые папки. 3) По окончании установки автоматически запускается VBS-скрипт (пользователь опять ничего не видит). Что будет делать скрипт? Не знаю. К примеру, копировать надстройку из папки установки в папку AddIns, подключать эту надстройку, или что-то ещё. Написано много, но делается это все достаточно просто и быстро. Файлы сценариев Inno Setup пишутся очень просто. Вот пример: Цитата:
Цитата:
Вопрос можно? А зачем открывать папку (окно Explorer-a), если её тут же надо будет закрывать? Надо окно - не проблема, открывается оно одной строкой кода. Не надо, чтобы открывалось - так просто не открывайте его...
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 28.12.2009 в 15:34. |
|||||||
28.12.2009, 16:09 | #6 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
еще раз спасибо - боольшущее - EducatedFool !!
все логично, буду пережевывать Про окно explorer-а я потому заговорил, что большинство потенциальных пользователей иначе как из окна и не запускают файлы (т.е. проводником просто не умеют или не желают пользоваться). Открывают в окне диск, указанную папку и из нее запускают установочный файл, соответственно, эта папка и остается открытой. Ну и кроме того, это старая проблема, когда рабочая станция АСУ ТП впадает в ступор из-за огромного количества окон, образованных автоматически диагностическими П/П и нерадивыми пользователями. Наши спецы делали экзешник для конвейерного удаления окон сверх заданного количества - но для данного случая это уже слишком -( Заодно уж еще проблемка по данной теме. В моей проге в процессе отладки кроме vba, excel и offise в предпочтениях прописалась Microsoft Offise11 Object Library (команды меню). При пуске надстройки на чужой машине, как правило, идет запрос на установку этой библиотеки. И хоть достаточно кликнуть ОК - само сообщение раздражает. А как заранее эту связь прописать - не соображу. Кроме того, в excel 2007 вряд ли такая библиотека есть. Кстати, пока к каждой команде vba или excel не приписал vba. или application. - более новые версии еще и "старые" библиотеки требовали прописать... С уважением и надеждой -) |
28.12.2009, 16:20 | #7 | |||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Она нужна, если в проекте присутствуют формы. Если форм нет - убирайте галочку, и заменяйте константы вида mso... их значениями. С этой библиотекой, вроде, проблем не возникает - при открытии проекта в более новых версиях excel обычно автоматически (без каких-либо вопросов) подключается более новая версия библиотеки Microsoft Office Object Library (при отсутствии нужной версии) Цитата:
Ни разу ничего подобного не дописывал - и всё работало без лишних вопросов. Цитата:
А пользоваться этим меню умеют даже самые тупые пользователи |
|||
28.12.2009, 16:37 | #8 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
еще ПАСИБ!
Да, у меня формы, и весьма насыщенные А с vba. и application. - как установил SP3, так и заверещал дебугер, и на других компах с SP3 - тоже верещал (писал и отлаживал прогу на 2003 без SP - может их-за этого?) Более того, не стала восприниматься команда инсталляции надстройки из самой надстройки - не могу, пишет, и все тут, только из другого файла работает... |
28.12.2009, 16:38 | #9 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Пошел переваривать, а то несварение будет
|
04.05.2010, 09:40 | #10 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Для завершения темы...
Текущее окно закрывается сочетанием клавиш Alt + F4 Вставил в скрипт соотв. команду - получилось Set oShell = CreateObject("WScript.shell") ....... 'последняя команда скрипта: oShell.SendKeys "%{F4}" |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
я удалил папку можно ее востановить | мандарин | Операционные системы общие вопросы | 11 | 19.07.2012 21:05 |
можно ли закрыть окно папки из bat-файла (explorer.exe)? | alvazor | Операционные системы общие вопросы | 2 | 23.12.2009 17:05 |
Закрыть папку | Kreadlling | Общие вопросы C/C++ | 1 | 08.09.2009 18:24 |
Можно ли программно переименовать папку | Rusl92 | Общие вопросы Delphi | 3 | 13.09.2008 12:52 |
Программно закрыть Internet Explorer 7 | Vladimir K. | Общие вопросы Delphi | 10 | 21.01.2008 20:00 |