Как перезапустить проводник, не потеряв открытые окна?

Когда мне придется перезапуститьexplorer.exe, обычно у меня открыто много папок, которые в процессе закрываются. Итак, есть ли способ автоматически открыть эти папки после перезапуска проводника?

3 ответа

Этотbatchсценарий:

  1. Составляет список открытых в данный момент окон → сохраняет его в файл.
  2. Перезапускает Windowsexplorer.exe
  3. Повторно открывает папки из списка → удаляетtxtфайл

      @echo off
setlocal enabledelayedexpansion

powershell  @^(^(New-Object -com shell.application^).Windows^(^)^).Document.Folder.Self.Path >> prevfolderpaths.txt

taskkill /im explorer.exe /f

start explorer.exe

FOR /F "tokens=*" %%f IN (prevfolderpaths.txt) DO (

set "var=%%f"
set "firstletters=!var:~0,2!"

IF "!firstletters!" == "::" ( start /min shell:%%~f ) ELSE ( start /min "" "%%~f" )

)

del "prevfolderpaths.txt"

Как только вы сохраните код какrestart_explorer.bat.. дальше тебе следует

  1. Щелкните правой кнопкой мыши → Отправлено → Рабочий стол (создать ярлык)
  2. Щелкните правой кнопкой мыши ярлык → Выполнить: Свернуть → и добавьте ярлык.

так что этот скрипт просто открывает свернутые окна

Я пока не могу комментировать, но хотел бы улучшить ответ goldnick7. Вы можете сохранить свои папки максимально развернутыми, удалив второй:

      IF "!firstletters!" == "::" ( start /min shell:%%~f ) ELSE ( start "" "%%~f" )"

я ушел первым/minтам, чтобы помнить, этот флаг существует.


Кроме того, в многопользовательской среде вы можете использовать эту команду, чтобы влиять только на ваши процессы:

      taskkill /f /fi "UserName eq %UserName%" /im explorer.exe

Важно что/fiидет раньше/im, иначе это не сработает.

      powershell $open_folders = @((New-Object -com shell.application).Windows()).Document.Folder.Self.Path; Stop-Process -Name explorer -Force;  foreach ($element in $open_folders){Invoke-Item $($element)}
Другие вопросы по тегам