2019년 5월 12일 일요일

windows command line

-----------------------------------------------------------------------------------------
유용한 코드(batch) 1
bkini.ini 안의 많은 설정값 중
UpdateSpeedCore=8 을 UpdateSpeedCore=5 로
바꾸고 new.ini 파일로 내용을 저장하는 코드

@echo off
set TARGET=UpdateSpeedCore
set VALUE=5
(for /f "tokens=1,* delims=]" %%a in ('type bkini.ini ^| find /n /v ""') do (
    if "%%b" == "" (
        echo.
    ) ELSE (
        FOR /F "tokens=1,* delims==" %%k in ("%%b") DO (
            IF %%k==%TARGET% (
                echo %TARGET%=%VALUE%
            ) ELSE (
                echo %%b
            )
        )
    )
))>"new.ini"



※ 해설

@echo off
 -> cmd 화면에 명령 복창을 하지 않게 함, @는 이 명령 자체도 복창하지 않게

set TARGET=UpdateSpeedCore
 -> 변수 선언과 값 대입, 사용시 %TARGET% 으로 사용

for /f "tokens=1,* delims=]" %%a in ('type bkini.ini ^| find /n /v ""') do (
 -> 분할설명
 for /f "options" %%var in ('command_to_process') do ( .....
  -> for 문 options 설명 이전에 command_to_process 부분 설명
      bkini.ini 파일의 내용을 한 줄 씩 긁어 온다. 그런데
      find /v /n "" 라는 조건이 달려있다.
      이는 각 라인에 [number] 형태의 라인넘버를 붙여서 긁어오고(/n)
      공백 문자를 포함하지 않는 라인만 추려서 가져온다는 것(/v "")

예시> 이런 내용의 ini 파일이 있다면, for 문 단계에서는
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[/Script/EngineSettings.GeneralProjectSettings]
ProjectID=2F40BC8E489521C36FE7B99E98610C40

[StartupActions]
bAddPacks=True
InsertPack=(PackSource="StarterContent.upack",PackName="StarterContent")

UpdateSpeedCore1=100
UpdateSpeedCore=88


odbcDSN=QGMGTMS_62
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
이 상태에서
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[1][/Script/EngineSettings.GeneralProjectSettings]
[2]ProjectID=2F40BC8E489521C36FE7B99E98610C40
[3]
[4][StartupActions]
[5]bAddPacks=True
[6]InsertPack=(PackSource="StarterContent.upack",PackName="StarterContent")
[7]
[8]UpdateSpeedCore1=100
[9]UpdateSpeedCore=88
[10]
[11]
[12]odbcDSN=QGMGTMS_62
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
이렇게 나옵니다.

이렇게 넘버를 붙여서 정보를 가공하는 이유는
 -> 공백 라인까지도 그대로 유지하는 결과물을 뽑아내기 위함입니다.


그리고 options 설명
저렇게 가져와 진 내용을 가공하여 취사 선택하는 부분입니다.
delims=]  이 부분은 각 라인을 ] 를 기준으로 나눕니다.
나누는 개수는 tokens=1,* 를 보면 첫 ] 의 앞쪽은 %%a 에 나머지 뒤쪽은 %%b 에
이렇게 두부분으로 저장합니다.
언급되지 않은 %%b 는 암묵적으로 생겨나는 거라고 생각 하세요

우리는 %%b 에 집중합니다. 원래 ini 파일에 있던 내용들입니다.

if "%%b" == "" (
    echo.
) ELSE (
    
)

%%b 가 empty 라인이면 빈줄을 생성(echo.) 합니다.
아니라면 아래와 같이

FOR /F "tokens=1,* delims==" %%k in ("%%b") DO (
    IF %%k==%TARGET% (
        echo %TARGET%=%VALUE%
    ) ELSE (
        echo %%b
    )
)

%%b 의 내용을 이번엔 = 을 기준으로 앞뒤로 나누어서 앞 부분인 %%k를 이용합니다.
%%k 의 내용이 %TARGET%과 같아면 %TARGET%=%VALUE% 형태로 만들어 주고
아닌경우 그대로의 내용 %%b 을 기입한다.


(로직)>"new.ini" 
 -> 해당 로직을 거쳐 나온 내용을 new.ini 에 생성한다.






-----------------------------------------------------------------------------------------







@는 echo를 하지 말라는 것
echo off 는 앞으로 echo 끄라는 명령어

echo ㅇㅇㅇㅇㅇ 라고 하면 ㅇㅇㅇㅇㅇ 가 프린트 됨

echo < 는 프린트 안됨 ^ 를 앞에 (^< 이렇게) 붙이면 < 가 출력됨

/? 출력을 하려면
ehco./? 이렇게 하면됨


윈도우 명령어
명령어설명
ASSOC파일 확장명 연결을 보여주거나 수정합니다.
ATTRIB파일 속성을 표시하거나 바꿉니다.
BREAK확장된 CTRL+C 검사를 설정하거나 지웁니다.
BCDEDIT부팅 로딩을 제어하기 위해 부팅 데이터베이스에서 속성을 설정합니다.
CACLS파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정합니다.
CALL한 일괄 프로그램에서 다른 일괄 프로그램을 호출합니다.
CD현재 디렉터리 이름을 보여주거나 바꿉니다.
CHCP활성화된 코드 페이지의 번호를 표시하거나 설정합니다.
CHDIR현재 디렉터리 이름을 보여주거나 바꿉니다.
CHKDSK디스크를 검사하고 상태 보고서를 표시합니다.
CHKNTFS부팅하는 동안 디스크 확인을 화면에 표시하거나 변경합니다.
CLSCMD 화면에 표시된 것을 모두 지웁니다.
CMDWindows 명령 인터프리터의 새 인스턴스를 시작합니다.
COLOR콘솔의 기본색과 배경색을 설정합니다.
COMP두 개 또는 여러 개의 파일을 비교합니다.
COMPACTNTFS 분할 영역에 있는 파일의 압축을 표시하거나 변경합니다.
CONVERTFAT 볼륨을 NTFS로 변환합니다. 현재 드라이브는 변환할 수 없습니다.
COPY하나 이상의 파일을 다른 위치로 복사합니다.
DATE날짜를 보여주거나 설정합니다.
DEL하나 이상의 파일을 지웁니다.
DIR디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.
DISKCOMP두 플로피 디스크의 내용을 비교합니다.
DISKCOPY플로피 디스크의 내용을 다른 플로피 디스크로 복사합니다.
DISKPART디스크 파티션 속성을 표시하거나 구성합니다.
DOSKEY명령줄을 편집하고, Windows 명령을 다시 호출하고, 매크로를 만듭니다.
DRIVERQUERY현재 장치 드라이버 상태와 속성을 표시합니다.
ECHO메시지를 표시하거나 ECHO를 사용 또는 사용하지 않습니다.
ENDLOCAL배치 파일에서 환경 변경의 지역화를 끝냅니다.
ERASE하나 이상의 파일을 지웁니다.
EXITCMD.EXE 프로그램(명령 인터프리터)을 마칩니다.
FC두 파일 또는 파일의 집합을 비교하여 다른 점을 표시합니다.
FIND파일에서 텍스트 문자열을 찾습니다.
FINDSTR파일에서 문자열을 찾습니다.
FOR파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.
FORMATWindows에서 사용할 디스크를 포맷합니다.
FSUTIL파일 시스템 속성을 표시하거나 구성합니다.
FTYPE파일 확장 연결에 사용되는 파일 형식을 표시하거나 수정합니다.
GOTOWindows 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진 줄로 이동합니다.
GPRESULT컴퓨터 또는 사용자에 대한 그룹 정책 정보를 표시합니다.
GRAFTABLWindows가 그래픽 모드에서 확장 문자 세트를 표시할 수 있게 합니다.
HELPWindows 명령어에 관한 도움말을 제공합니다.
ICACLS파일과 디렉터리에 대한 ACL을 표시, 수정, 백업 또는 복원합니다.
IF일괄 프로그램에서 조건 처리를 수행합니다.
IPCONFIG윈도우 TCP/IP 설정상태 확인 명령어
LABEL디스크의 볼륨 이름을 만들거나, 바꾸거나, 지웁니다.
MD디렉터리를 만듭니다.
MKDIR디렉터리를 만듭니다.
MKLINK기호화된 링크와 하드 링크를 만듭니다.
MODE시스템 장치를 구성합니다.
MORE출력을 한번에 한 화면씩 표시합니다.
MOVE하나 이상의 파일을 한 디렉터리에서 다른 디렉터리로 옮깁니다.
OPENFILES파일 공유에서 원격 사용자에 의해 열린 파일을 표시합니다.
PATH실행 파일의 찾기 경로를 보여주거나 설정합니다.
PAUSE배치 파일의 처리를 보류하고 메시지를 보여줍니다.
POPDPUSHD 명령으로 저장된 디렉터리로 바꿉니다.
PRINT텍스트 파일을 인쇄합니다.
PROMPTWindows 명령 프롬프트를 바꿉니다.
PUSHD현재 디렉터리를 저장한 후 디렉터리를 바꿉니다.
RD디렉터리를 지웁니다.
RECOVER불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구합니다.
REM배치 파일 또는 CONFIG.SYS에서 주석을 기록합니다.
REN파일 이름을 바꿉니다.
RENAME파일 이름을 바꿉니다.
REPLACE파일을 대체합니다.
RMDIR디렉터리를 지웁니다.
ROBOCOPY파일과 디렉터리 트리를 복사할 수 있는 고급 유틸리티입니다.
SETWindows 환경 변수를 보여주거나, 설정하거나, 지웁니다.
SETLOCAL배치 파일에서 환경 변경의 지역화를 시작합니다.
SC서비스를 표시하거나 구성합니다(백그라운드 작업).
SCHTASKS컴퓨터에서 실행할 명령과 프로그램을 예약합니다.
SHIFT배치 파일에서 바꿀 수 있는 매개 변수의 위치를 바꿉니다.
SHUTDOWN컴퓨터의 로컬 또는 원격 종료를 허용합니다.
SORT입력을 정렬합니다.
START지정된 프로그램이나 명령을 별도의 창에서 시작합니다.
SUBST경로를 드라이브 문자로 지정합니다.
SYSTEMINFO특정 컴퓨터의 속성과 구성을 표시합니다.
TASKLIST서비스를 포함한 실행 중인 모든 작업을 표시합니다.
TASKKILL실행 중인 프로세스나 응용 프로그램을 중지합니다.
TIME시스템 시간을 보여주거나 설정합니다.
TITLECMD.EXE 세션에 대한 창의 창 제목을 설정합니다.
TREE드라이브 또는 경로의 디렉터리 구조를 그래픽으로 화면에 표시합니다.
TYPE텍스트 파일의 내용을 보여줍니다.
VERWindows 버전을 보여줍니다.
VERIFY파일이 디스크에 올바로 쓰였는지 검증할지 여부를 지정합니다.
VOL디스크 볼륨 이름과 일련 번호를 보여줍니다.
XCOPY파일과 디렉터리 트리를 복사합니다.
WMIC대화형 명령 셸 내의 WMI 정보를 표시합니다.



calc계산기 실행
control제어판 실행
cmd명령 프롬프트 실행
explorer탐색기 실행
ipconfig -allIP 구성
java -version자바 버전 확인
mspaint그림판
mstsc원격 데스크톱
notepad메모장 실행
nslookupdns 정보와 연관된 도메인 정보 확인
ping네트워크 상태 확인
telnettelnet 접속(연속)
tracert네트워크 경로 추적

----------------------------------------------------------------------------------------
ss64.com

관련 사이트
----------------------------------------------------------------------------------------

FOR 문 사용법

FOR /F ["options"] %%parameter IN (filenameset) DO command
FOR /F ["options"] %%parameter IN ("Text string to process") DO command

ex)
FOR /F "tokens=1,2 delims=\=" %%K IN (bkini.ini) DO (
    IF "%%K" NEQ "UpdateSpeedCore" (
        >>bkini.new echo %%K=%%L
    ) else (
        >>bkini.new echo %%K=8
    )
)
#FOR 문은 한 라인씩 인식 따온다.


options 설명

tokens= 라인에서 몇 번째 문자열을 가져올지
tokens=2,4,6
tokens=2-6
tokens=*
tokens=3* will process the third token and the 4th + all subsequent items, this can also be written as tokens=3,*

delims= 어떤 문자로 문자열을 나눌지(기본은 공백문자)

skip= 몇 번째 라인까지 스킵할지

eol= 기본값 ; 주석 ("eol=" 기능 끄기, "eol=# eol=@" -> 의 경우 마지막 것 적용 )

usebackq 인용부호" 관련 플래그
이 옵션은 공백을 포함한 파일 경로 양쪽에 큰 따옴표를 붙여줄 때 사용합니다.
대신 이 옵 션을 사용하면 괄호안에 들어갈 집합에 대한 표시를 조금 다르게 해야합니다.
원래는 (파일), ("문자열"), ('명령어') 인데 usebackq 옵션을 사용하면
("파일"), ('문자열'), (`명령어`) 형태로 써야합니다.


parameter 는 배치파일 에서는 %%p, 커맨드 라인에서는 %p, 추가로 대소문자 구분



----------------------------------------------------------------------------------------

레지스트리 내용 확인

커맨드라인에  reg.exe query hklm 라고 치면


내 피씨의 레지스트리 정보 중 HKEY_LOCAL_MACHINE 아래 항목이 나온다









2019년 5월 7일 화요일

Jenkins


========================================================
build 주기 문법


* : 모든 범위
- : 앞에서 뒤까지
/ : 주기 설정
, : 비연속 명시
H : Jenkins 가 알아서 유도리 있게 결정

분 시 일 월 주

주 -> 1 2 3 4 5 = 월 화 수 목 금 //// 6 토, 7 일



0 0 * * *                : 매일 0시에 빌드
H/15 * * * *           :: 15분 간격으로 빌드
H(0-29)/10 * * * *    : 매 시간의 첫 30분 동안 10분 간격으로 빌드
H 9-16/2 * * 1-5     :: 주말을 빼고, 9~16시 사이 2시간 간격으로 빌드



========================================================
빌드 방식

빌드를 원격으로 유발 (예: 스크립트 사용)
TOKEN_NAME 을 저장

url:port/jenkins/job/test1/build?token=TOKEN_NAME


========================================================
Port 번호 변경

D:\Program Files (x86)\Jenkins\jenkins.xml 내용 변경
--httpPort=8080 -> 이 부분을 찾아서 9090 등 안쓰는 걸로 바꿈


========================================================
재시작

http://your-jenkins/safe-restart
http://your-jenkins/restart

========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================
========================================================