내가 Perl을 예전에 아주 잠깐 접했다가 지금 이시점에서 다시 꺼내든 이유는 단지...
진수변환을 cmd로 하기 위해서였다.
16진수 -> 10진수
16진수 -> 2진수
10진수 -> 16진수
10진수 -> 2진수
2진수 -> 10진수
2진수 -> 16진수
이 기능 중 cmd상 윈도우 기본명령어로는 10진수를 다른진수로 변환하는게 안되고...
윈-R키에 calc 열어서 마우스로 깨작깨작하는것은 여간 귀찮은일이 아니다
calc 열어서 마우스 말고 넘패드 쓰면 되지 않겠느냐고 하지만 노트북 넘패드는 정말...
언 넘이 만들었는지... 개발바닥만도 못하게 만들어놔서 써먹지를 못하겠다 게다가 진수변환버튼
눌러줘야 하는건 매한가지다
여하튼 각설하고
StrawberryPerl 설치는 포터블로 USB에다가 압축을 풀어서 설치하고,
버전은 64bit/32bit 다 설치를 해주었다
중요한것은 USB를 꽂아서 윈도우에 Path환경변수를 등록해주는 것인데
내가 이걸 BAT파일로 자동화하겠다고 앞에다 뻘글 써놓은게 있다
결론적으로 얘기해서 ㅅㅅㅅ 덕분에 이걸 만들게 되었으니 고맙단 말을 전한다
Powershell을 이용해서 환경변수를 등록하려면 파워셀 스크립트를 만들어서
BAT에서 실행해줘야하는데 이게.... USB에서는 작동을 안한다
결국 BAT에서 Registry를 건드려가지고 User Path를 변경한 후에
WM_SETTINGCHANGE 메세지를 발동시켜주어야 하며
이것이 BAT파일 전문이다
참고로 % cd %(%사이 cd공백 없애야 한다)는 perl-32 버전 64bit 버전의 상위경로다
또한 정규표현식 치환을 위해 repl.bat 파일을 동일한 경로에 추가했다.[첨부파일에 추가했음]
출저: http://www.dostips.com/forum/viewtopic.php?f=3&t=6044
-------------------------------------------------------
@echo off
setlocal EnableExtensions
set KEY="HKEY_CURRENT_USER\\Environment"
set VAL=Path
set Perl=% cd %strawberry-perl-5.20.3.1-32bit-PDL\\perl\\bin
for /f "tokens=2*" %%a in ('reg query %KEY% /v %VAL%') do set "regValue=%%~b"
echo ---[Path 레지스트리 변경전]---
echo %regValue%
echo ---[Path 레지스트리 변경전]---
echo.
echo.%regValue% | findstr /c:%Perl% >nul && (
for /f "delims=" %%A in ('repl "([^;]+strawberry[^;]+)(-32)(bit)" "$1-64$3" /S regValue') do set "regValue=%%A"
echo 64bit 펄 버전
) || (
for /f "delims=" %%A in ('repl "([^;]+strawberry[^;]+)(-64)(bit)" "$1-32$3" /S regValue') do set "regValue=%%A"
echo 32bit 펄 버전
)
echo.%regValue% | findstr /c:"strawberry" >nul && (
echo 경로로 변경하는
) || (
echo 경로를 추가하는
set "regValue=%regValue%;%Perl%"
)
reg add %KEY% /v %VAL% /f /t REG_SZ /d "%regValue%"
echo.
echo ---[Path 레지스트리 변경후]---
echo %regValue%
echo ---[Path 레지스트리 변경후]---
echo.
setx TTT TTT
pause
--------------------------------------------------------------------------------
BAT파일을 만들고 실행하면 32bit 펄을 패스 환경변수에 추가한다
다시 실행하면 64bit로 바꾸고
또 실행하면 32bit로 바꾸며
실행할때마다 32bit와 64bit 패스경로를 체인지 해준다
패스에서 제거하는BAT파일도 만들었지만 여기선 생략하겠다.
여하튼 환경변수 등록이 제대로 되었으면
새로 cmd창을 띄우고
perl -V:archname 명령어를 실행하면 현재 버전이 64bit인지 32bit인지 확인 할 수 있다
32bit일 경우
archname='MSWin32-x86-multi-thread-64int';
64bit 경우
archname='MSWin32-x64-multi-thread';
이러한 출력을 볼 수 있다
자 이제 결론이다 이걸 보기 위해 여태까지 달려왔다
정말-.- 이거한다고... 삽질을 참... ㅋㅋㅋ
일단 16진수 -> 10진수로 바꿔보자
cmd 상에서
perl -e "printf qq{%d} 0x123"
10진수 -> 16진수
perl -e "printf qq{%x} 123"
이짓 하려고 여까지 달려왔다...
calc보다 불편하겠다라고 하는 사람도 있을진 모르겠지만
여하튼 마우스는 쓰지 않아도 된다 또한 출력이력이 남으니
이젠 계산기의 메모리기능 따위는 잊어도 된다
게다가 포터블 이니 USB 하나들고
꽂고 환경변수 BAT파일로 등록하고
CMD창 열어서 명령한번 해주면 끝이다
Perl이 생각보다 쓸만하다고 느껴지지 않는가?
원라이너로 리눅스 부럽지 않게 윈도우에서 명령어실행이 가능할테니
특별한 사람들에게는 매력적으로 다가 올 거라 생각한다
댓글 0