.bat 파일을 시스템 트레이에서만 실행하려면 어떻게해야합니까?

니콜라스 리차즈

TL; DR은 하단에 있습니다!

여기에 세부 사항 :

유선으로 모뎀에 연결된 라우터에 무선으로 연결된 Win 10 랩톱에서 두 가지 이유로 인해 인터넷 연결이 불안정합니다.

  • 이유 1, Win 10의 결함이 아닌 것 : 내 모뎀은 종종 고장 나서 (모뎀 자체, ISP 또는 무엇이든 IDK), 이로 인해 다시 시작됩니다. 이 경우 랩톱의 인터넷 (분명히)도 꺼지지 만 모뎀이 다시 켜질 때 다시 연결되지 않습니다. 그렇게하는 유일한 방법은 네트워크 연결 창에서 무선 어댑터를 비활성화 한 다음 활성화하는 것입니다.

  • 이유 2, 뭔가 입니다 승리 (10)의 잘못 : 내 노트북은 때때로 Wi-Fi 네트워크에서 쫓겨됩니다. 이것은 내 NIC 또는 라우터와 같은 Win 10 이외의 다른 원인으로 인해 발생할 수 있습니다. 나를 괴롭히는 것은 Win 10이 예정되어 있어도 네트워크에 자동으로 다시 연결되지 않을 때입니다. Wi-Fi 메뉴에서 직접 "연결"버튼을 클릭하면 정상적으로 작동합니다.


시나리오 중 하나가 발생할 때마다 감지하는 * .bat 파일을 만든 다음 문제를 해결하기로 결정했습니다. 인터넷에 대한 약간의 조사를 통해 다음 스크립트를 작성했습니다.

@echo off
:LOOP
ping 8.8.8.8
IF ERRORLEVEL 1 goto RESTART
IF ERRORLEVEL 0 goto LOOP
:RESTART
netsh interface set interface "<wireless adapter>" disabled
netsh interface set interface "<wireless adapter>" enabled
netsh wlan connect name="<ssid>" interface="<wireless adapter>"
timeout /t 15
goto LOOP

이것은 훌륭하게 작동하지만 (관리자 권한으로 실행될 때) 이제 문제는 프로세스가 실행되는 동안 cmd 창이 열려 있지 않도록 (화면 및 작업 표시 줄에) 원하지 않는다는 것입니다 . 대신 트레이에서 실행되기를 원하므로 필요한 경우 작업 관리자로 이동하지 않고도 쉽게 종료 할 수 있습니다. 작업 스케줄러에서 스크립트를 시작할 때 최소화되도록 예약 할 수 있다는 것을 알고 있지만 작업 표시 줄에서 창을 숨기지 않을까요?

TL; DR :

* .bat 파일을 트레이에서 실행하거나 시계별로 쉽게 마우스 오른쪽 단추로 클릭하고 중지 / 종료 할 수 있도록하려면 어떻게해야합니까? 실행 파일을 컴파일하는 것이 이것을 달성하는 유일한 방법입니까?

Anaksunaman

나는 이것이 간단한 .bat파일을 통해 수행 될 수 있다고 믿지 않기 때문에 이것은 AutoHotKey에 대한 작업처럼 보입니다 .

AutoHotkey (AHK)는 사용자가 반복적 인 작업을 자동화 할 수 있도록하는 Windows 용 무료 오픈 소스 매크로 생성 및 자동화 소프트웨어입니다. 그것은 시간이 지남에 따라 본격적인 스크립팅 언어로 진화 한 키보드 단축키 (또는 핫키라고도 함)를 제공하는 것을 목표로 한 스크립팅 언어에 의해 구동됩니다.

2014 년의이 포럼 게시물에 따르면 다음 과 유사한 스크립트를 사용하여 창 가시성을 전환 할 수 있습니다.

#NoTrayIcon
#Persistent

global hBatFile

/* Setup Tray icon and add item that will handle
* double click events
*/
Menu Tray, Icon
Menu Tray, Icon, C:\windows\system32\cmd.exe
Menu Tray, Add, Show / Hide Pingu, TrayClick
Menu Tray, Add, Close Pingu, CloseItem
Menu Tray, Default, Show / Hide Pingu

;// Run program or batch file hidden
DetectHiddenWindows On
Run pingu.bat,, Hide, PID
WinWait ahk_pid %PID%
hBatFile := WinExist()
DetectHiddenWindows Off
return

TrayClick:
OnTrayClick()
return

;// Show / hide program or batch file on double click
OnTrayClick() {
    if DllCall("IsWindowVisible", "Ptr", hBatFile) {
        WinHide ahk_id %hBatFile%

    } else {
        WinShow ahk_id %hBatFile%
        WinActivate ahk_id %hBatFile%
    }
}

CloseItem() {

       DetectHiddenWindows On
       WinWait ahk_class ConsoleWindowClass
       Process, Close, cmd.exe
       DetectHiddenWindows Off
       ExitApp

}

이 스크립트는 AutoHotKey 1.1.24.00 (2016 년 5 월)에서 테스트되었습니다.

수정 : 개선 된 OP 수정 버전에 대한 링크입니다.

이 경우 :

  • pingu.bat 는 실행할 배치 파일의 (임의) 이름입니다.
  • hBatFile 은 일부 창 정보를 포함하는 임의의 변수 이름입니다.
  • Pingu 는 추가 AHK 트레이 메뉴 항목에 표시되는 임의의 이름입니다.

스크립트를 다음과 같이 저장하고 tray.ahk( .ahk스크립트 확장에 주의 ) 두 번 클릭하여 실행하십시오 (AutoHotKey를 설치했다고 가정).

스크립트는 최소화 된 배치 파일을 시작하고 기본 AHK 스크립트 아이콘을 트레이의 소형 콘솔 창 아이콘으로 바꿉니다.

콘솔 창 가시성은 트레이 아이콘 또는 추가 된 트레이 메뉴 항목 (선택 메뉴 하단에 굵게 표시됨)을 두 번 클릭하여 토글 할 수 있습니다.

Close아래에 추가 된 메뉴 항목을 사용 하여 배치 파일과 명령 창을 모두 닫을 수 있습니다 Show / Hide( Exit콘솔 창이 아닌 스크립트 만 닫음).

또한

Run pingu.bat,, Hide, PID

분명히 pingu.bat자신의 배치 파일 이름으로 바꿔야합니다. 이 줄은 AHK 스크립트가 동일한 디렉토리에 나타나 pingu.bat거나 pingu.bat전역 적으로 액세스 할 수 있다고 가정합니다 (즉, 시스템 경로 또는 사용자 PATH 변수의 폴더에 추가됨). 그렇지 않으면 pingu.bat실행 파일의 전체 경로 로 바꾸고 싶을 것입니다 (공백을 확인하십시오!).


주의 사항

이 스크립트는 대부분 창 가시성에 대한 인터페이스 역할을합니다. 이것이 의미하는 바는 Exit트레이 아이콘 통해 배치 파일이 아닌 AHK 스크립트 만 종료한다는 것입니다.

간단한 해결책은 추가 된 Close메뉴 항목 을 사용 하여 스크립트를 종료하고 중지하는 것 cmd.exe입니다. 또는 다음을 수행 할 수 있습니다.

  • 콘솔 창을 표시하고 Ctrl+ C(또는 빨간색 'X'로 콘솔 창을 닫음)를 사용하여 일괄 처리를 종료합니다.

  • ExitAHK 스크립트를 중지하려면 트레이 아이콘에서 선택하십시오.

언급했듯이 그들은 별도의 프로세스입니다.


참고 : 숨겨진 창이있는 고아 콘솔 프로그램은 AHK 스크립트가 Exit먼저 종료 된 경우 다시 직접 액세스 할 수 없습니다. 하지만 작업 관리자를 사용하여 관련 cmd.exe프로세스 를 닫을 수 있습니다 .


Close하나가있는 경우 서면으로 메뉴 항목은 잘 작동 cmd.exe과정. 그러나 둘 이상의 cmd.exe프로세스가 실행중인 경우 스크립트로 시작한 배치 파일이 제대로 닫히지 않을 수 있습니다 (다른 항목이 닫힐 수 있음). 대신 프로세스 ID (PID)로 마감을 조사 할 수 있습니다. 즉, 위의 동일한 표시 / 닫기 / 종료 프로세스를 사용할 수도 있습니다.


스크립트 노트

Menu Tray, Icon, C:\windows\system32\cmd.exe

관련 포함 아이콘 파일이있는 컴파일 된 실행 파일의 위치를 ​​나타냅니다. 이를 포함 된 아이콘이있는 실행 파일에 대한 참조 또는 .ico아이콘 파일에 대한 직접 참조로 대체 할 수 있어야합니다.

Menu Tray, Icon, C:\Path\To\Icons\icon.ico

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

.bat 파일이 원격 Linux에 Linux 명령을 실행하도록하려면 어떻게해야합니까?

분류에서Dev

Windows XP에서 VirtualBox 시스템을 서비스로 실행하려면 어떻게해야합니까?

분류에서Dev

Mac OSX에서 동시에 여러 파이썬 파일을 실행하려면 어떻게해야합니까?

분류에서Dev

Xubuntu 13.04에서 .jar 파일을 실행 파일로 표시하려면 어떻게해야합니까?

분류에서Dev

Xubuntu 13.04에서 .jar 파일을 실행 파일로 표시하려면 어떻게해야합니까?

분류에서Dev

파일 목록을 보려면 변경된 파일에 대해서만 빌드 스크립트를 실행하려면 어떻게해야합니까?

분류에서Dev

.bat 파일을 사용하여 cmd 팝업없이 .pyw 스크립트를 시작하려면 어떻게해야합니까?

분류에서Dev

압축 파일이 포함 된 실행 파일을 만들고 파일 실행시 실행하려면 어떻게해야합니까?

분류에서Dev

셀이 비어 있지 않은 경우 Google 스프레드 시트에서만 계산을 실행하려면 어떻게해야합니까?

분류에서Dev

LAN을 통해 두 Linux 시스템간에 파일을 공유하려면 어떻게해야합니까?

분류에서Dev

Ubuntu에서만 ClamAV로 전체 시스템 스캔을 수행하려면 어떻게해야합니까?

분류에서Dev

데스크톱에 보관 된 파일을 C ++로 실행하려면 어떻게해야합니까?

분류에서Dev

스크롤에서 한 번만 jQuery 애니메이션을 실행하려면 어떻게해야합니까?

분류에서Dev

시스템 시간 변경을 실험하면서 "수동으로 fsck 실행"메시지를 피하려면 어떻게해야합니까?

분류에서Dev

한 시스템에서 실행되는 명령을 다른 시스템에서 재현하려면 어떻게해야합니까?

분류에서Dev

32 비트 및 64 비트 시스템에서 exe Java 애플리케이션을 실행하려면 어떻게해야합니까?

분류에서Dev

내 실행 파일로 텍스트 파일을 열려면 어떻게해야합니까?

분류에서Dev

내 스프레드 시트 파일의 모든 시트에서 Google Apps 스크립트를 실행하려면 어떻게해야합니까?

분류에서Dev

태그 스페이스 실행 파일이 작동하도록하려면 어떻게해야합니까?

분류에서Dev

셀레늄 스크립트 실행을 잠시 중단하려면 어떻게해야합니까?

분류에서Dev

동일한 파일 시스템에서 두 폴더를 병합하려면 어떻게해야합니까?

분류에서Dev

NFS를 통해 / dev / mapper 마운트 파일 시스템을 내보내려면 어떻게해야합니까?

분류에서Dev

NFS를 통해 / dev / mapper 마운트 파일 시스템을 내보내려면 어떻게해야합니까?

분류에서Dev

.bat 파일에서 두 파일을 자동으로 열려면 어떻게해야합니까?

분류에서Dev

.bat 파일에서 두 파일을 자동으로 열려면 어떻게해야합니까?

분류에서Dev

메뉴 시스템에서 jQuery 이벤트 스택을 방지하려면 어떻게해야합니까?

분류에서Dev

로컬 파일 시스템에서 Jenkins 서버 콘솔 출력을 보려면 어떻게해야합니까?

분류에서Dev

실행 중에 쉘 스크립트가 일시 중지되도록하려면 어떻게해야합니까?

분류에서Dev

`execl ()`을 사용하여 C / C ++에서 시스템 명령을 실행하고 함수 인수를 실행 파일이 아닌 명령 줄로만 전달하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    .bat 파일이 원격 Linux에 Linux 명령을 실행하도록하려면 어떻게해야합니까?

  2. 2

    Windows XP에서 VirtualBox 시스템을 서비스로 실행하려면 어떻게해야합니까?

  3. 3

    Mac OSX에서 동시에 여러 파이썬 파일을 실행하려면 어떻게해야합니까?

  4. 4

    Xubuntu 13.04에서 .jar 파일을 실행 파일로 표시하려면 어떻게해야합니까?

  5. 5

    Xubuntu 13.04에서 .jar 파일을 실행 파일로 표시하려면 어떻게해야합니까?

  6. 6

    파일 목록을 보려면 변경된 파일에 대해서만 빌드 스크립트를 실행하려면 어떻게해야합니까?

  7. 7

    .bat 파일을 사용하여 cmd 팝업없이 .pyw 스크립트를 시작하려면 어떻게해야합니까?

  8. 8

    압축 파일이 포함 된 실행 파일을 만들고 파일 실행시 실행하려면 어떻게해야합니까?

  9. 9

    셀이 비어 있지 않은 경우 Google 스프레드 시트에서만 계산을 실행하려면 어떻게해야합니까?

  10. 10

    LAN을 통해 두 Linux 시스템간에 파일을 공유하려면 어떻게해야합니까?

  11. 11

    Ubuntu에서만 ClamAV로 전체 시스템 스캔을 수행하려면 어떻게해야합니까?

  12. 12

    데스크톱에 보관 된 파일을 C ++로 실행하려면 어떻게해야합니까?

  13. 13

    스크롤에서 한 번만 jQuery 애니메이션을 실행하려면 어떻게해야합니까?

  14. 14

    시스템 시간 변경을 실험하면서 "수동으로 fsck 실행"메시지를 피하려면 어떻게해야합니까?

  15. 15

    한 시스템에서 실행되는 명령을 다른 시스템에서 재현하려면 어떻게해야합니까?

  16. 16

    32 비트 및 64 비트 시스템에서 exe Java 애플리케이션을 실행하려면 어떻게해야합니까?

  17. 17

    내 실행 파일로 텍스트 파일을 열려면 어떻게해야합니까?

  18. 18

    내 스프레드 시트 파일의 모든 시트에서 Google Apps 스크립트를 실행하려면 어떻게해야합니까?

  19. 19

    태그 스페이스 실행 파일이 작동하도록하려면 어떻게해야합니까?

  20. 20

    셀레늄 스크립트 실행을 잠시 중단하려면 어떻게해야합니까?

  21. 21

    동일한 파일 시스템에서 두 폴더를 병합하려면 어떻게해야합니까?

  22. 22

    NFS를 통해 / dev / mapper 마운트 파일 시스템을 내보내려면 어떻게해야합니까?

  23. 23

    NFS를 통해 / dev / mapper 마운트 파일 시스템을 내보내려면 어떻게해야합니까?

  24. 24

    .bat 파일에서 두 파일을 자동으로 열려면 어떻게해야합니까?

  25. 25

    .bat 파일에서 두 파일을 자동으로 열려면 어떻게해야합니까?

  26. 26

    메뉴 시스템에서 jQuery 이벤트 스택을 방지하려면 어떻게해야합니까?

  27. 27

    로컬 파일 시스템에서 Jenkins 서버 콘솔 출력을 보려면 어떻게해야합니까?

  28. 28

    실행 중에 쉘 스크립트가 일시 중지되도록하려면 어떻게해야합니까?

  29. 29

    `execl ()`을 사용하여 C / C ++에서 시스템 명령을 실행하고 함수 인수를 실행 파일이 아닌 명령 줄로만 전달하려면 어떻게해야합니까?

뜨겁다태그

보관