소프트웨어 배치파일 작성시 도움이필요합니다
2018.10.03 11:11
위에 명령어를 사용하여 드라이버명을 입력받으려고합니다
그런데 사람들마다 c라고입력하는분도있고 c:라고라는분도있을거같아 입력받은 변수에 :이 있는지없는지 판별하거나 혹은 자동으로 붙일방법이없을까요?
댓글 [7]
-
suk 2018.10.03 11:44
-
sikey 2018.10.03 12:54
감사합니다! 집에가는대로해봐야겟네요 ㅎㅎ -
sikey 2018.10.03 16:07
감사합니다! 집에와서 이제확인해보았는데 정말잘되는군요 ㅎㅎ
-
DarknessAngel 2018.10.03 12:46
조금 무식한 방법이지만 입력받은 변수를 A~Z까지 다 일일히 조건문으로 처리하는 방법도 있습니다아니면 첫글자만 잘라내서 받는 방법도 있습니다 (A~Z가 아닌 오타(예 : 한영을 잊어버리거나, 오타로 특문등을 입력)를 방지하기 위해서 두가지 병합해서 첫글자 자른후 이게 A~Z에 일치하는지 비교하는 방식으로 입력받으시길 추천합니다)suk님이 수정하셨군요 (저런 시스템에 민감한 스크립트 (저런거 원하시면 주로 OS설치나 파티션 조작등이 대부분의 목적이라 추정됩니다) 작성시 입력 필터 제대로 안 해두면 어떤 문제 일으킬지 아무도 모릅니다)
-
sikey 2018.10.03 16:06
넵 신경써주셔서 감사합니다.
제가지금만드려고하는건 사용자에게 미리 백업을하도록 고지를 하고있지만
자주안하는 위치들을 자동으로 백업할수있는 보완대책입니다 ㅎㅎ
매번 일일히 하자니 손이많이가고 쉬는날 만들어볼까해서 검색하다가
도저히 제능력으론 안되서 도움을 청하게 되었습니다. ㅎㅎ
-
메리아 2018.10.03 17:42
suk님 답변보니...
역시 파워셸이나 vbs가 답인듯.
파워쉘은 잘 모르지만 저런거 줄일수 있을거같고,
vbs도 비교적 손쉽게 처리할 수 있을텐데요... ㅠㅠ
-
DarknessAngel 2018.10.03 19:01
파워셀은 bash등을 본받아서 꽤 다양한 기능을 처리 가능하고, 개선되었고, vbs는 규격이 윈도 시대 넘어와서 나온거지만, cmd경우는 과거 dos시절에 쓰던 bat규격을 그대로 이어받은 노답스러운 사항을 자랑합니다
뭔가 조금만 복잡한거 다룰려면 머리 썩이게되고, 가장 골치아픈건 동일한걸 C&P한다음 변수 내용물만 바꾸어도 안 되거나하는 괴랄함을 보여줍니다 (여기까지 해버리면 문법등이 왜 있는지도 모르겠음)
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
97307 | 소프트웨어| EaseUS Data Recovery 관련 질문입니다 [4] | 실시간 | 199 | 07-04 |
97306 | 기 타| 질문 하나 올립니다. [1] | 케이블카 | 199 | 04-28 |
97305 | 윈 도 우| iso로 설치시 배치파일이 일부 정상로딩되지않습니다 [2] | 고양이뜰채 | 199 | 05-31 |
97304 | 게 임| 메타버스 오픈소스에 관해 질문합니다~ [3] | 아임프리 | 199 | 05-31 |
97303 | 윈 도 우| 폴더 바로가기 문의 [3] | 치토스 | 199 | 07-27 |
97302 | 윈 도 우| 문의- C:\에 윈도우11 home insider preview 22504평가판(2... [1] | 사이버초보 | 199 | 11-28 |
97301 | 소프트웨어| IFW에서 압축 옵션 질문있씁니다. [1] | 너구리세상 | 199 | 04-18 |
97300 | 기 타| 오토핫키 파일명 이름변경 31부터 시작하는 법좀 알려주세... [2] | 평화 | 199 | 03-14 |
97299 | 윈 도 우| 알리에서 한번씩 주소 오류가 나옵니다. [1] | brucex | 199 | 12-06 |
97298 | 기 타| 텍스트 줄간격 질문 하나 더 있습니다 [4] | tbvpfm | 199 | 04-17 |
97297 | 소프트웨어| vm 네트워크 독립된 ip사용시 [2] | 컴아저씨훈 | 199 | 04-11 |
97296 | 윈 도 우| 윈도우 XP 샘플 음악에 대하여 [3] | Niconii | 199 | 03-12 |
97295 | 소프트웨어| 블로그의 네이버지도를 원노트에 복사하기 [1] | brucex | 199 | 05-21 |
97294 | 윈 도 우| 윈도우11 PRO 설정 옵션 켜기/끄기 레지스트리 문의 [1] | 따운돌이 | 199 | 05-22 |
97293 | 윈 도 우| 장치추가 질문드립니다. | 이박사o | 200 | 12-24 |
97292 | 기 타| 게시판에 이미지 올리는 법 [2] | 엘리야 | 200 | 05-14 |
97291 | 윈 도 우| ADK 새 버전이 나올까요? | 타락한영혼 | 200 | 04-27 |
97290 | 윈 도 우| VHD로 설치하면 인증이 안되어 있습니다. | tesoro | 200 | 12-25 |
97289 | 기 타| 우클릭에 문법이나 단어 ? 같은 걸... [2] | 로또2등 | 200 | 01-08 |
97288 | 기 타| 각 상품별 특징이 어떻게 되는지 궁금하네여. [1] | dadf | 200 | 01-10 |
:name
set /p name=
@if "%name%"=="" goto :name
@echo.%name% | find ":" >nul || set name=%name%:
@echo.name은 "%name%" 입니다
pause
이렇게 하시면 될 겁니다. : 이 없으면 자동으로 : 을 붙이는 방식입니다.
테스트 해보시고...마지막에 2줄 @echo.name은 "%name%" 입니다 와 pause는 삭제하시면 될 겁니다
그런데, 다음 방식이 더 완벽할 겁니다. d: 대신에 d; 처럼 오타를 쓸 수도 있는데요. 위에 방식은 이걸 걸러낼 수 없습니다
다음 방식은 처음 문자에 무조건 :을 붙여줍니다. 그래서 뒤에 오타를 쓴 경우도 오류가 생기지 않습니다. 저도 방금 생각한 것입니다
:name
set /p name=
@if "%name%"=="" goto :name
for /f "tokens=*" %%a in ('"echo %name:~0,1%"') do set name=%%a:
@echo.name은 "%name%" 입니다
pause
드라이브 명에 영어가 아닌 한글 입력하시는 분에게는 대책이 없습니다만...저도 사실 생각은 했지만 점점 복잡해져서 생략했습니다
예전에 제가 올린 bat 파일 보신 분들이 있을 지 모릅니다만, a부터 z까지 확인했습니다.
3탄, 한글 또는 이상한 문자 입력하시는 분들을 위하여...
:name
set /p name=
@if "%name%"=="" goto :name
@for /f "tokens=*" %%a in ('"echo %name:~0,1%"') do @set name=%%a:
@if /i not "%name%"=="A:" if /i not "%name%"=="B:" if /i not "%name%"=="C:" if /i not "%name%"=="D:" if /i not "%name%"=="E:" if /i not "%name%"=="F:" if /i not "%name%"=="G:" if /i not "%name%"=="H:" if /i not "%name%"=="I:" if /i not "%name%"=="J:" if /i not "%name%"=="K:" if /i not "%name%"=="L:" if /i not "%name%"=="M:" if /i not "%name%"=="N:" if /i not "%name%"=="O:" if /i not "%name%"=="P:" if /i not "%name%"=="Q:" if /i not "%name%"=="R:" if /i not "%name%"=="S:" if /i not "%name%"=="T:" if /i not "%name%"=="U:" if /i not "%name%"=="V:" if /i not "%name%"=="W:" if /i not "%name%"=="X:" if /i not "%name%"=="Y:" if /i not "%name%"=="Z:" goto :name
@echo.name은 "%name%" 입니다
pause
대/소문자는 관계없습니다. if /i not 에서 /i가 대/소문자 가리지 않는 옵션입니다.