Как определить, открыта ли указанная папка оболочки c Windows с помощью пакетных команд - PullRequest
0 голосов
/ 29 января 2020

У меня есть пакетная программа, которая открывает программы и файлы в определенном порядке c, поэтому я могу открыть все без единого щелчка при входе в компьютер. Этот сценарий будет запускаться автоматически как для «холодных» загрузок, так и путем адаптации ответа можно будет запустить сценарий, чтобы просто открыть windows, который еще не был открыт, без создания дубликатов.

Этот фрагмент кода отлично работает практически для всего Мне нужно определить, запущена ли уже программа:

SETLOCAL EnableExtensions
set EXE=notepad++.exe
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND
start C:\MEDIA\OFFICE\Notepad++\notepad++.exe
goto FIN
:FOUND
echo Notepad++ is already running.
:FIN

Однако я не уверен, как использовать этот метод (или какие альтернативные методы существуют), который сообщит мне, если указан следующий параметр c Папка оболочки открыта или нет.

Требуемый / рабочий путь (My Documents):

start %windir%\explorer.exe shell:UsersFilesFolder\JAB Creations

Абсолютный путь (My Computer):

D:\My Documents\JAB Creations

Важные разъяснения

  • Каталог представляет собой символьную c ссылку, , которая , если вам интересно, Mklink /J "C:\Users\John\JAB Creations" "D:\My Documents\JAB Creations".
  • Я не хочу использовать абсолютный путь, я хочу, чтобы каталог открывался под My Documents, , а не My Computer.
  • Я удалил записи мусора в Windows Explorer, такие как Libraries и Quick Access, и я использую * 1 036 * (который сейчас называется User Files). Эта команда открывает каталог через My Documents вместо того, чтобы указывать его в списке, например, My Computer.
  • Если вы тестируете, вам нужно включить опции Expand to open folder и Show all folders в окне Folder Options на вкладке View, в противном случае полезные каталоги по умолчанию скрыты.

Важные предпосылки

Сначала исправьте параметры папки, в противном случае попытка будет бессмысленной:

Fix Folder Options

Во-вторых, это то, что должно происходить визуально:

Correct Windows Explorer Behavior

1 Ответ

1 голос
/ 30 января 2020

В Windows 10 explorer.exe по умолчанию вводит заголовок окна N / A, но есть обходной путь, если вы запускаете эти экземпляры проводника.

Регулярное открытие проводника (при запуске explorer.exe или открытии значка) приведет к следующему запросу заголовка:

C:\Users\***>tasklist /fi "imagename eq explorer.exe" /fo list /v
Image Name:   explorer.exe
PID:          5320
Session Name: Console
Session#:     1
Mem Usage:    141,516 K
Status:       Running
User Name:    ***\***
CPU Time:     0:31:41
Window Title: N/A

При запуске explorer.exe с флагом заголовка (не даже нужно указать строку) заставит проводник сохранять точное значение заголовка. Итак, в приведенном выше коде вызовите explorer.exe следующим образом:

C:\Users\***>explorer.exe /Title

Это приведет к тому, что наш запрос заголовка вернет фактический заголовок (и, следовательно, текущую открытую папку):

Image Name:   explorer.exe
PID:          13888
Session Name: Console
Session#:     1
Mem Usage:    45,964 K
Status:       Running
User Name:    ***\***
CPU Time:     0:00:00
Window Title: Documents

Поэтому теперь все, что вам нужно сделать, это запросить все экземпляры проводника с помощью tasklist /fi "imagename eq explorer.exe" /fo list /v и проанализировать возвращенные данные для имени папки, которую вы идентифицируете sh, как показано ниже (я проверяю «Документы» в заголовке):

C:\Users\***>tasklist /fi "imagename eq explorer.exe" /fo list /v | find "Documents"
Window Title: Documents

C:\Users\***>

Приведенный выше запрос вернет 0 или 1 код для найденного / не найденного. Вы можете работать с этим, чтобы ваш код проверял, открыта ли указанная папка c в windows explorer (.exe). Я надеюсь, что это дало вам хороший gr asp при использовании необычного Windows 10 исследователя!

...