[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 3 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
aa Решил выложит модульную конструкцию из трёх файлов, которой с удовольствием пользуюсь aa
Первый файл - Folders.bat - является главным и интегрирующим в себя управление другими двумя файлами

Folders.bat

CLS
@echo off
if "%~1" == "" (start "" /min "%comspec%" /c "%~f0" any_word & exit /b)
set OUTPUT=nul
if "%STDOUT_REDIRECTED%" == "" (
set STDOUT_REDIRECTED=yes
cmd.exe /c %0 1>%OUTPUT% 2>%OUTPUT%
exit /b %ERRORLEVEL%
)
:: CОБИРАЕМ ДАННЫЕ ОБ ОТКРЫТЫХ ОКНАХ ПРОВОДНИКА И ЗАПИСЫВАЕМ ИХ В Folders.cmd
Folders.ps1
:: --- Рабочий код ---
:: --- Конец рабочего кода  ---
:: ЖЁСТКО ПЕРЕГРУЖАЕМ ПРОВОДНИК
:: Первая часть
:: Notification Area Cleaner
:: Created by Hally Master hally_master (at) yahoo (dot) com
:: Distributed by www.7tutorials.com
:: WARNING! This utility restarts your shell (Explorer.exe) and clears your notification area icon cache
taskkill /im explorer.exe /f
reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams /f
reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream /f
:: Часть вторая (самопал)
rem убиваем и запускаем по новой explorer.exe
taskkill.exe /F /IM explorer.exe
rem убиваем taskmgr.exe
rem taskkill.exe /F /IM taskmgr.exe
:: Часть третья (и последняя)
:: Перезапуск диспетчера окон Windows Explorer
NET STOP UXSMS
NET START UXSMS
start "Shell Restarter" /d "%systemroot%" /i /normal explorer.exe
:: explorer /select,"%0"
:: C:\WINDOWS\explorer.exe /e,
taskkill.exe /F /IM conhost.exe
:: ВОССТАНАВЛИВАЕМ ОТКРЫТЫЕ ОКНА ПРОВОДНИКА
Folders.cmd
1. Итак, Folders.bat первым делом запускает второй файл Folders.ps1, который
cобирает данные об открытых окнах проводника и записывает их в третий файл Folders.cmd
2. Затем в Folders.bat идёт прикладной модуль
В нём можно прописать нужный Вам код.
Я, например, прописал жёсткую перезагрузку Проводника Windows bb
Использую и для других частных ситуаций типа перезапуска проигрывателя вместе со всем звуковым трактом винды и т.п.
3. Ну а под конец Folders.bat запускает полученный на первом этапе Folders.cmd,
который содержит в себе адреса окон Проводника, которые были открыты в момент запуска батника Folders.bat
И окна проводника восстанавливаются в том виде и количестве, которое было до запуска Folders.bat
Вот такая модульная конструкция.
Да, самый главное забыл - вот Folders.ps1,
который и сохраняет адреса открытых окон Проводника в файл Folders.cmd

Folders.ps1

(New-Object -ComObject 'Shell.Application').Windows() | ForEach-Object {
  $localPath = $_.Document.Folder.Self.Path
  "C:\WINDOWS\explorer.exe /e, `"$localPath`""
}| Set-Content Folders.cmd
Если кого заинтересовала моя конструкция и есть предложения как её упростить, то буду тока рад Вашим советам.
Особо интересно перевести конструкцию к одному языку, лучше к cmd, поскоку PS1 я даже читать не понимаю ...
Все исходники брал с разных ресурсов по cmd и PowerShell
и перерабатывал\программировал по аналогии и методом научного тыка
ah
PS 1 Файлы Folder.bat и Folder.PS1 легко содаются из приведённых выше кодов.
Foder.cmd не привожу, поскоку он создаётся в процессе работы.
Файлы, естественно, должны лежать друг около друга.
PS 2 У меня в системе файды PS1 запускаются из проводника Windows
Если есть необходимость, то добавлю готовые файлы в раздачу.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
96863
Если кого заинтересовала моя конструкция и есть предложения как её упростить, то буду тока рад Вашим советам.
Особо интересно перевести конструкцию к одному языку, лучше к cmd, поскоку PS1 я даже читать не понимаю .
Вряд ли cmd сможет выполнить такой код. Shell.Application это объект проводника, через него можно выполнять любые команды, всё что может проводник. Здесь метод ".Windows()" получает все окна проводника. Далее ForEach-Object - цикл , в котором перечисление объектов окон, метод ".Self.Path" свой-путь в переменную $localPath, ну и следующая стандартная команда запуска проводника с передаваемым ему пути.
Если что справка по объектам я выкладывал вместе с AkelPad, там есть файл wsh.chm

[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 3 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
96866Вряд ли cmd сможет выполнить такой код
Другими словами, функционал по сохранению перечня окон проводника в файл Folders.cmd
(то, что делает скрипт Folders.ps1) в старом добром батнике реализовать невозможно ?...
Исчо другими словами, файл bat можно перевести полностью на современный PowerShell и
всю конструкцию реализовать не виде bat + ps1 + cmd файлов,
а тока в виде ps1 + cmd.
Впрочем для этого мне нужно изучить работу с PowerShell ac
Повторюсь - если командную строку и bat\cmd я исчо худо бедно могу прочитать, интерпретировать и подправить,
то PowerShell вызывает у меня сразу Альцгеймера и Паркинсона вместе ai

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
rekshd, мне пока лень, но PureBasic и AutoIt3 может разными путями всё это проделать. Найти окна проводника, скопировать текст с адресной строки, сохранить в файл. Или получить доступ к объекту проводника и обычным запросом получить путь. Но только код по работе с объектом комбайн ещё тот.

[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 3 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
Да, после регистрации сейчас крайнего PKM_DLL перестал вообще запускаться Проводник по хоткею Win+E
И ПКМ по дереву папок также вышибает Explorer в ошибку и перегружает его ...
Зато стало выводится большое количество выделяемых файлов, чего раньше не было. (при debug=1)

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
96869Да, после регистрации сейчас крайнего PKM_DLL перестал вообще запускаться Проводник по хоткею Win+E
Перекачай, исправил. Проблема в регистрации Folder вместо Directory. Я пробовал метод тыка чтобы избавиться от падения, так как один вариант подразумевает папки, второй включая объекты, типа "Мой компьютер".


Показать сообщения:    

Текущее время: 19-Апр 19:16

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы