Я пытался достичь этого с помощью своих базовых навыков. Вот что я придумал.
Сначала настройте окна для запуска окон папок как отдельного процесса (вместо того, чтобы хранить все папки под одним и тем же explorer.exe), это позволяет закрывать папки с помощью командной строки / пакетных сценариев.
Затем запишите этот пакетный файл и поместите его в ** C:\Users\ Имя пользователя \ AppData \ Roaming \ Microsoft \ Windows \ Меню Пуск \ Программы \ Запуск ** (Почему это не жирным шрифтом?)
@echo off
start explorer "D:\"
:loop
timeout 0
(net use | findstr OK) > nul 2>&1
if errorlevel 1 goto loop
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVELABEL*" /IM explorer.exe
start /wait explorer "G:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE2LABEL*" /IM explorer.exe
start /wait explorer "F:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE3LABEL*" /IM explorer.exe
start /wait explorer "H:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE4LABEL*" /IM explorer.exe
stop
Просто замените буквы дисков на те, которые относятся к вашей системе, а на NETWORKDRIVELABEL - названия соответствующих сетевых дисков. Это необходимо, потому что полное имя заголовка окна - «NETWORKDRIVELABEL (\SHARENAME) (DRIVELETTER)», но вместо написания полного заголовка окна я просто использую звездочку (*), чтобы определить, что он предназначен для закрытия любого процесса проводника с помощью заголовок окна, начинающийся с NETWORKDRIVELABEL.
Он пытается открыть общий сетевой ресурс «D:\» с помощью проводника Windows. Как это происходит, так как это сетевой ресурс, вы получаете приглашение войти в систему. После этого запускается цикл, в котором программа запускает net use | findstr OK (ищет "OK" в выводе "net use") и не двигается дальше, пока не найдет OK (эта часть предполагает, что у вас нет инициализированных сетевых дисков. Я не уверен, как быть более сложным с findstr; это не так хорошо, как grep Bash).
Затем, как только он обнаружит, что сетевой диск правильно подключен, он попытается сопоставить другие сетевые диски, открыв их с помощью проводника, а затем закрыв их.
Мне пришлось использовать команду остановки в конце командного файла, иначе он не закончится нормально (ожидал ввода данных пользователем).
Обратитесь сюда, если вы хотите сделать это, но скрыть командное окно: Как запустить командный файл без запуска "командного окна"?