Как перезапустить проводник, не потеряв открытые окна?
Когда мне придется перезапуститьexplorer.exe
, обычно у меня открыто много папок, которые в процессе закрываются. Итак, есть ли способ автоматически открыть эти папки после перезапуска проводника?
3 ответа
Этотbatch
сценарий:
- Составляет список открытых в данный момент окон → сохраняет его в файл.
- Перезапускает Windows
explorer.exe
- Повторно открывает папки из списка → удаляет
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
.. дальше тебе следует
- Щелкните правой кнопкой мыши → Отправлено → Рабочий стол (создать ярлык)
- Щелкните правой кнопкой мыши ярлык → Выполнить: Свернуть → и добавьте ярлык.
так что этот скрипт просто открывает свернутые окна
Я пока не могу комментировать, но хотел бы улучшить ответ 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)}