반응형

netstat 조회 결과 중 pid 값을  taskkill 명령어에 써먹는 batch파일을 만들려고 함

 

1. netstat 명령어 실행 -> 결과 중 3148 을 변수에 저장하려고 함 

C:\Users>netstat -ano | findstr 8080
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       3148
  TCP    [::]:8080              [::]:0                 LISTENING       3148

 

2.  변수에 3148을 대입하는 명령어

1) %a 변수에 netstat 결과 중 3148을 넣는다

2) result 변수에 %a를 대입한다

for  /f  "tokens=5  delims=  "  %a  IN  ('netstat  -ano  ^|  findstr 8080'do  set  result=%a
tokens : 결과에서 몇 번째를 저장할 지 설정
delims : 구분자

    "tokens=5 delims= "  :  공백을 구분자로 다섯번째 문자열을 선택(3148)

%a : 임시로 쓸 변수
result : 명령어 저장할 변수
in ( ) : 실행할 명령어를 넣는다.
do() : 앞의 명령어 실행 후 실행할 내용
* 명령어에 ' | ' 나 ' ( ' 같은 특문이 있으면 앞에 ^를 붙일 것
* 변수 세팅시 ( set 변수=%a) 공백 없도록
* batch파일에 적을 때에는 %a에 %를 하나 더 붙인다 

 

cmd에 실행한 예시

netstat 결과가 두줄이라 그런지... set result가 두 번 실행됨..

C:\Users\heirr>for /f "tokens=5 delims= " %a IN ('netstat -ano ^| findstr 8080') do set result=%a

C:\Users\heirr>set result=3148

C:\Users\heirr>set result=3148

C:\Users\heirr>echo %result%
3148

 

반응형

batch 파일 내용(test.bat)

//batch 파일을 관리자로 실행하기 위해 넣었음
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)

cd ../

for /f "tokens=5 delims= " %%a IN ('netstat -ano ^| findstr 8080') do set result=%%a

//result 변수를 taskkill 명령어에 사용
taskkill /f /pid %result%

//batch 파일로 실행한 cmd가 자동종료되지 않게 하기 위함
cmd /k

 

 

반응형

+ Recent posts