안녕하세요.
taskkill /IM explorer.exe /t /f
위 명령어를 실행하면 탐색기창이 모두 닫히면서 블랙화면으로 되는데
블랙화면 않되게 탐색기만 종료할수 있는 방법없나요?
pid로 종료 할려고 해도 탐색기 pid가 랜덤으로 변경되는데
고수님들의 가르침 부탁드립니다.
------------------------------------------------------
/t 만 생략하셔서 taskkill /IM explorer.exe /f 사용하시면 탐색기만 종료됩니다
taskkill /IM explorer.exe /t /f 사용하시면 탐색기만 아니라 작업표시줄까지 전부 종료되고
탐색기에서 실행하신 프로그램들까지 종료되어 버립니다. (위 명령을 cmd나 bat 파일로 실행하시면 실행 중인 cmd 도 종료되어 버립니다)
그리고 말씀하신대로 검은 화면이 됩니다. 윈도우 버전에 따라서는 검은 화면이 아니라 하얀 화면이 될 수 있습니다
검은 화면이든 하얀 화면이든 윈도우에 문제가 생긴 것은 아니고, explorer 실행해주시면 작업표시줄과 바탕화면이 나타납니다
explorer.exe 중에는 탐색기만 아니라 작업표시줄도 있습니다.
explorer.exe 를 /t 옵션으로 전부 종료하시려고 하시면 위와 같이 작업표시줄까지 사라지는 문제가 생깁니다..
지금 개발 중인 버전 21H2 윈도우 10 에서는 작업 표시줄과 탐색기가 분리된다고 하더군요.
--------------------------------------------------------
구글링하다가 저도 모르던 방법을 찾았네요.
자바스크립트가 이런식으로 실행 가능하다는걸 또 처음 알았네요. ㄷㄷㄷ
아래 내용을 "원하는이름.cmd"로 붙여넣고 사용해보세요.
---------------------------------------------------------------------
@if (@CodeSection == @Batch) @then
@echo off
cscript //e:jscript //nologo "%~f0" %*
exit /b
@end
// JScript Section
var shellWindows = (new ActiveXObject("shell.application")).Windows();
if (shellWindows != null)
{
var all_list = [];
for (var win = new Enumerator(shellWindows); !win.atEnd(); win.moveNext()){
WScript.Echo("경로 : " + win.item().LocationUrl);
all_list.push(win.item());
}
// 위에서 바로 닫으면 순서가 꼬이므로 위에서는 목록만 받고
// 실제 닫는건 아래에서.
for(var i in all_list){
all_list[i].Quit()
}
}
---------------------------------------------------------------------
구글링하다
https://superuser.com/questions/1263315/how-to-close-a-particular-opened-folder-using-cmd-or-batch-file
위 링크에서 방법을 찾아서
약간 수정한겁니다.
위 링크의 내용은 특정 타겟만 닫는거고,
원하시는건 전부 닫는거니까 그건 뺐습니다.
그리고 저걸 응용하면 역으로 원하는거만 빼고 다 닫을수도 있겠군요.
이거 오히려 제가 감사드려야겠네요.
이런방식은 그다지 생각 안해봤는데 저도 검색하며 처음 알게됐고, 저도 유용하게 쓸 수 있게 됐네요!