윈도우10에서 PC나 노트북 이동시 자주 사용하는 곳을 왔다갔다할 경우 자주 IP 변경해야 할 경우, 그 때마다 네트웍 설정을 해 주기가 너무 번거롭다.
이것을 커맨드 라인으로 자동화 할 수 있으면 편리하다.
이런 사용자들을 위한 팁.
윈도우 10 IP 변경 커맨드 라인
장소1
현재 네트웍 정보를 확인하고 화면캡쳐를 해둘것을 권장한다. 나중에 찾아볼때 편하다. 네트웍디바이스(NIC)명을 확인하고 ip address, network, gateway, dns 설정 등이다.
위에서 “이더넷 어댑터” 뒤에 나온 스트링을 잘 기억해야 한다. 보통은 “로컬 영역 연결” 이라고 나오는 것이 일반적이다. PC마다 다를 수 있어서 확인해 주어야 한다. 여기서는 “알수없음” 이라고 나와있어서 그렇게 작성하였다.
아래와 같이 배치 파일(network_pub.bat)을 만들어 준다. 이것은 장소1에서 현재의 네트웍 상태로 만들어주는 스크립트이다. 위에서 나오는 필드들을 잘 확인하여 자신에 맞는 형태로 바꾸어 주면 된다. (인터페이스명과 IP들만 바꿔준다.)
netsh int ip set address "알수없음" static 172.16.10.11 255.255.0.0 172.16.10.254 1
netsh int ip set dns "알수없음" static 172.16.10.1 primary validate=no
netsh int ip add dns "알수없음" 168.126.63.1 index=2 validate=no
장소2
장소2에서도 마찬가지로 부여받은 고정IP로 네트웍을 설정한 후, 현재 상태를 확인한다. (이것도 별도로 화면캡쳐 해 두는 것이 좋다.)
이더넷 어탭터(NIC 인터페이스) 이름은 장소1에서 사용한 이름과 동일할 것이다. IP address, NetMask, Gateway, DNS IP를 확인한다.
이제 장소2의 네트웍 변경 커맨드를 아래와 같이 작성한다. (인터페이스명과 IP들만 바꿔준다.)
netsh int ip set address "알수없음" static 192.168.10.11 255.255.255.0 192.168.10.254 1
netsh int ip set dns "알수없음" static 8.8.8.8 primary validate=no
완료
주의!!! 위 배치 파일을 실행하기 위해서는!!! cmd.exe 창을 열 때 반드시 관리자 권한으로 실행해야 한다.
(cmd 명령프로프트 아이콘에서 마우스 우클릭하여 관리자권한으로 실행)
이제 장소 1에서는 network_pub.bat를 실행하고, 장소2에서는 network_pri.bat를 실행하기만 하면 고정IP가 설정대로 변경될 것이다.
이제 더 이상 장소 이동시 귀찮은 네트웍 설정 변경 작업을 하지 않아도 된다!!!
∫sec6xdx=∫sec2xsec4xdx(D(tanx)→sec2x)=sec4xtanx−∫4sec3xsecxtanxtanxdx=sec4xtanx−4∫sec4xtan2xdx=sec4xtanx−4∫sec4xsec2x−sec4xdx=sec4xtanx−4∫sec6xdx+4∫sec4xdx5∫sec6xdx=sec4xtanx+4∫sec4dx∫sec4dx=∫sec2x(1+tan2x)dx=∫sec2xdx+∫sec2xtan2xdx=tanx+∫sec2xtan2xdx∫sec2xtan2xdx(u=tanx,du=sec2xdx)=∫u2du=31u3=31tan3x5∫sec6xdx=sec4xtanx+4∫sec4dx=sec4xtanx+4(tanx+31tan3x)∴∫sec6xdx=51sec4xtanx+54tanx+154tan3x+C=51(1+2tan2x+tan4x)tanx+54tanx+154tan3x+C=51tan5x+55tanx+1510tan3x+C=51tan5x+32tan3x+tanx+C
Alternative
31. [1:49:32](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=6572s) integral of (x-x^(3/2))^-1/2
32. [1:52:37](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=6757s) integral of (x-x^2)^-1/2
33. [1:56:03](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=6963s) integral of e^(2lnx)
34. [1:56:57](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7017s) integral of lnx/sqrt x
35. [2:00:32](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7232s) integral of 1/e^x+e^-x
36. [2:01:57](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7317s) integral of log(x) base 2
37. [2:05:15](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7515s) integral of x^3*sin2x
38. [2:08:32](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7712s) integral of x^2[1+x^3]^1/3
39. [2:12:30](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7950s) integral of 1/(x^2 + 4)^2
40. [2:19:38](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=8378s) integral of sqrt(x^2-1) from 1 to 2
∫x2x2+11dx=∫tan2θsecθ1sec2θdθ(x=tanθ,dx=sec2θdθ)=∫secθcot2θdθ=∫cosθsin2θcos2θdθ=∫sin2θcosθdθ(t=sinθ,dt=cosθdθ)=∫t2dt=−t1=−sinθ1=−cscθ+C=−csc(arctanx)+C=−xx2+1+C
Alternative
cf) (x4−x2+1)(x4+x2+1)=x8−x6+x4+x6−x4+x2+x4−x2+1=x8+x4+1
부분 분수로 나눠보자. x4−x2+1x2+1=x2+ax+1c+x2+bx+1d(미지수를구한다)=x2+3x+121+x2−3x+121
따라서 적분을 취하면. ∫x4−x2+1x2+1dx=21∫x2+3x+11dx+21∫x2−3x+11dx=21∫(x+23)2+411dx+21∫(x−23)2+411dx
먼저 왼쪽 부분을 계산해 보자. 제곱의 형태를 삼각치환해 보자. (1+tan^x 꼴로 만든다.) 21tanθ=x+23 dx=21sec2θdθ
We know ∫1+x21dx=tan−1x+C. 21∫(x+23)2+411dx=21∫41tan2θ+411dx=21∫41sec2θ121sec2θdθ=θ+C=tan−1(2x+3)+C
오른쪽 부분도 같은 방식으로 계산하면 된다. 21∫(x−23)2+411dx=tan−1(2x−3)+C ∴∫x4−x2+1x2+1dx=tan−1(2x+3)+tan−1(2x−3)+C
∫csc3xsecxdx=∫sin3xcosx1dx=∫sin3xcosxcos2x+sin2xdx=∫sinxcosxcot2x+1dx=∫sinxcosxcot2xdx+∫sinxcosx1dx=∫sinxcosx1dx+∫sin2xsinxcosxcos2xdx
(이하는 아래 계산 과정과 동일)
Q∫ex+3exex−1dxu=ex−1,du=21ex−11exdx=∫u2+4u2ex−1du=2∫u2+4u2du=2∫u2+4u2+4−4du=2∫1−u2+44du=2[u−4∫u2+221du]+C=2[u−421arctan2u]+C=2u−4arctan2u+C=2ex−1−4arctan2ex−1+C
Again… Q∫ex+3exex−1dx(u=ex−1,du=exdx)=∫u+4udu(t=u,dt=2u1du,du=2udt)=2∫t2+4t2dt=2∫1+t241dt=2∫1+(t2)21dt(s=t2,t=s2,ds=−t22dt)=2∫1+s21(−2t2)ds=−∫1+s2t2ds=−∫1+s2s24ds=−4∫s2(1+s2)1ds=−4∫s21−1+s21ds=−4∫s21ds+4∫1+s21ds=−4(−1)s1+4arctans+C=t24+4arctant2+C=2t+4arctant2+C=2u+4arctanu2+C=2ex−1+4arctanex−12+CFailWhere is Incorrect?
Where is incorrect?? … No. It’s all right. arctanx1=2π−arctanx,(x>0)
So, Integration constant is ignored.
윈도우 커맨드에서 실행하는 DOS 스크립트 작성 방법. 쉽지만 막상 필요한 것을 하고 싶을 때 쉽지만은 않다. 자료가 많이 부족하다.
주석
주석 명령은 설명문으로 실행되지 않는다.
rem 으로 실행하고 뒤에 주석문(아무 스트링)을 입력하면 된다. 주석은 프로그래밍시에 간략한 설명을 위한 것이다.
@rem test message… : 앞에 @를 붙이면 배치파일 실행시 rem 커맨드 출력이 안되도록 한다. 물론 그 전에 @echo off을 해 두었다면 @을 붙일 필요없다.
더 간단하게는 :: 으로 시작하면 주석이 된다. 이것은 커맨드 출력도 되지 않아 더 간편히 사용할 수 있다. rem과 다르게 아예 없는 것으로 취급된다.
변수와 출력
dos batch는 파일 확장자를 .bat 또는 .cmd로 하여 메모장으로 텍스트 파일로 작성하면 된다.
기본 적인 출력은 “echo” 커맨드가 있다. 뒤에 출력할 내용을 적으면 된다.
출력 내용에 변수명을 적어 변수값을 출력할 수 도 있다. 또한 변수중에는 미리 시스템에서 정의된 값들도 있어서 유용하다.
변수 설정은 set으로 변수이름과 값을 =으로 할당한다.
변수 사용시에는 변수 이름 앞뒤로 %를 붙인다. 변수 삭제는 빈 값을 할당한다. (빈 값이 있는 변수로 만드는 것이 아니라 변수 자체를 삭제한다는 의미!)
SET FOO=hello world
echo %FOO%
echo %FOO%xxx%FOO%
SET FOO=
for문의 변수 이름은 커맨드창에서 바로 실행할 때 영문자앞에 %를 붙인다. 그러나, Dos batch file(.bat)에서 for문의 변수 영문자 앞에 %% 이렇게 %를 두 개 붙인다!
c:\> copy con test1.bat
@echo off
@rem this is a test batch...
set aaa=hello
echo %aaa%
echo %1
^Z
c:\> test1 kim
hello
kim
@echo off는 이후에 echo 실행명령은 출력하지 않고, 결과만 출력하도록 한다.
batch 파일 실행시 뒤에 파라미터를 줄 수 있는데, 순서대로 %1, %2, … 이렇게 변수로 사용할 수 있다.
줄바꿈. 엔터 입력. 빈 줄 출력
echo.
공백으로 시작하는 문자열 출력
echo. aaa
echo aaa (이것도 이제는 가능함. 앞에 공백 두 개)
특수 문자 출력시 앞에 ^를 사용
echo ^< 이것은 꺾은 괄호 ^>
echo ^| 파이프
echo ^^ 두 개 입력시 하나 출력
스트링 처리
문자열 추출 mid / substr
FOO 변수의 값에서 인덱스 6부터 3글자를 추출. (인덱스는 0부터 시작) 뒤에 수를 생략하면 끝까지를 의미함. -1은 마지막 바로 한글자를 의미.
set BAR=%FOO:~6,3%
set BAR=%FOO:~5%
set BAR=%FOO:~-3% : FOO가 파일명일떄 마지막 세글자(확장자명)을 가져온다.
연산
수 값을 할당하거나 연산하려면 SET /a를 사용한다.
set /a num=4*8+8/2+122
set /a num=1
set /a num+=2
if %num% GEQ 3 echo big
환경 변수
%CD% : 현재 작업 디렉터리
%DATE% : date 커맨드와 같은 포맷의 날짜
%TIME%
%RANDOM% : 0~32767 범위의 수
%ERRORLEVEL%
%CMDCMDLINE%
파라미터
파라미터는 %1, %2, 등으로 받는다. (%0은 배치파일 이름 자체임. %9까지 가능)
%*은 모든 파라미터를 의미함.
파리미터 내부에 공백이 있으면 커맨드상에서 파라미터를 "로 둘러싼다. 단, 스크립트에서 "를 제거하고 받으려면 %~1, %~2 로 받는다.
파라미터가 없으면 종료
if “%1” == “” goto :eof
파라미터에 "를 추가해 주어야 한다.’
Redirect
stderr까지 파일로 기록
cmd /c “test.exe” > “output.txt” 2>&1
실행만 하고 출력은 없앰 (no output)
dir > nul
nul 이라는 파일은 생성되지 않는다. (NUL 대소문자 상관없음. 주의! L이 한 개임.)
for /L %%n in (1,1,100) do net user %%n /add
1부터 100까지 증가하고, 숫자로 계정명으로 사용자를 추가한다.
(for의 변수는 커맨드로 실행시에는 %하나 batch file인 경우는 %% 두개를 사용한다.)
1부터 5까지 출력
for /L %n in (1,1,5) do echo %n
1부터 5까지 출력. 2씩 건너뜀.
for /L %n in (1,2,5) do echo %n
1,3,5 각각 한 줄로 출력됨.
goto
종료시
goto :eof 또는 goto:eof
eof 레이블은 만들필요없이 미리정의된 거라 그대로 사용 가능
또는 exit /b 0
레이블 지정과 goto
레이블 지정시에는 앞에 :을 붙이고 goto 시에는 :를 빼야 한다.
:loop
echo infinite…
goto loop
Sleep
@rem 3sec sleep
@ping 1.2.3.4 -n 1 -w 3000 > NUL
IF
조건 판단
같은지 확인 == 앞 뒤에 공백은 없어도 됨.
if %var% == 1 goto done
echo a
:done
echo b
if else : 괄호, 공백 주의
if %var% == 0 (
echo a
) else (
echo b
)
/i 옵션 : 대소문자 구분 없이 비교. (case-insensitive)
사용자 입력/텍스트파일변수
yn 선택지 (or 스트링 입력)
set /p result=message (Y/N)?
echo %result%
빈 값을 검사하려면 아래 코드를 참고
@echo off
:: init var for empty string.
set "result="
set /p result=are you ok(y/n)?
if "%result%" == "" (
echo no input
goto :eof
)
if /i "%result%"=="y" goto YES
if /i "%result%"=="n" goto NO
echo your input is %result%
텍스트 파일을 첫 행을 읽어 변수에 할당
set /p var=<%temp%\filename.txt
> copy con lines.txt
hello1
hello2
hello3
^Z
> set /p var=<lines.txt
> echo %var% %var%
hello1 hello1
디렉터리
중간 디렉터리까지 모두 생성. mkdir 대신 md를 사용
md “a\b\c”
하위 파일/디렉터리 모두 삭제. /s 옵션
rmdir /s “dirname”
기타
종료 : exit
exit /b 0 : /b는 cmd창은 남겨둔다는 의미. 뒤의 숫자는 프로그램 종료 리턴값. (다른 배치에서는 이 값을 errorlevel 변수로 받아 사용할 수 있다.)
파일 병합 / 붙이기 concate
파일 세 개를 붙여서 하나의 파일로 만든다.
copy 1.txt + 2.txt + 3.txt out.new /b
배치 파일에서 다른 배치 파일 실행하기
call b.bat : call을 사용한다. 그냥 b.bat로 실행하면? b.bat가 종료시 나머지 스크립트로 돌아오지 않고 종료된다.