윈 도 우 배치파일 Echo 명령과 출력 리다이렉션(>, >>)
2014.09.25 09:40
--실패 예)
1. echo 9>"%temp%\임시1.txt"
2. echo 파일목록(v1)7>"%temp%\임시2.txt"
3. echo 파일목록(v1)2>"%temp%\임시3.txt"
4. echo select disk=1>"%temp%\임시4.txt"
--> 1번은 ECHO가 설정되어 있지 않습니다
--> 2번~3번은 임시.txt 파일 생성은 되나 빈 문서임.
4번은 임시.txt 파일에 뒤의 숫자 1 이표시되지 않음(한자리 숫자일 경우만 발생???)
만약 뒤의 숫자가 77, 22, 11 인경우는 정상 출력됩니다.
--성공 예)
1. echo 9 >"%temp%\임시1.txt"
2. echo 파일목록(v1)7 >"%temp%\임시2.txt"
3. echo 파일목록(v1)2 >"%temp%\임시3.txt"
4. echo select disk=1 >"%temp%\임시4.txt"
--> 차이점은 9> , 9 > 출력 리다이렉션 > 앞의 공백 지정여부 입니다.
임시.txt 파일을 열어보면 맨끝에 빈공백이 있고 없고 차이입니다.
빈 공백이지만 만약 파일명이라면(ABC.txt , ABC .txt 2개의 파일 차이) 구분할 방법이 없지요.(출력 문자열에 확장자 txt 제외시)
아뭏튼 차이점은 발생합니다.
할수록 이상한 점이 많아지네요.
설명 좀 부탁드립니다.
댓글 [7]
-
홍차의꿈 2014.09.25 11:44 -
우리집 2014.09.25 14:39
홍차의꿈님 답변 감사드립니다.리다이렉션 > 앞에 공백을 두면 출력된 문구뒤에 공백을 생겨 이를 방지하고자 공백없이 리다이렉션 >을 사용해 왔는데
txt 파일이 생성되지 않거나 뒤에 숫자(문자는 관계없슴, 오로지 한자리 숫자는 안됨, 두자리 숫자는 가능) 가 출력 안되는
현상이 발생하네요.
지금까지 공백없이 리다이렉션 > , >> 을 사용해 왔거든요.
-
사랑인 2014.09.25 16:37
마지막 숫자앞에 ^처리하세요.
^^가 아닙니다. ^^; -
우리집 2014.09.25 17:02
사랑인님 저번에도 큰 도움을 받았는데... 감사합니다.set "test1=7win_20130210오후1035(m)2"
echo %test1%>"%temp%\임시1.txt"위와 같이 변수를 입력받아 정상적으로 출력할 수는 없는지요.
(이 경우 임시1.txt 는 내용이 없는 공백 파일이 되더군요) -
사랑인 2014.09.25 22:26
뭘 만드시길래....대강 감이 잡히기도하지만 좋은 작품기대하겠습니다.
약간 편법을 써야할듯.....숫자때문에 문제가 생기니....
끝숫자를 분리해서 ^를 넣어야 할듯..... 한번 해보세요..^^
-
우리집 2014.09.26 05:25
단계1 --------------------------------------------------------------------------
for /f "usebackq delims=" %%a in (`dir "%_drv_backup%\%_folder%\*.tib" /b /o:d`) do (
if /i "%%a" neq "7win_1st.tib" (
if /i "%%a" neq "예약파티션.TIB" (
set /a i=i+1
echo !i!. %%~nxta>> "%temp%\f_tib1.txt"
echo !i!:%%~na>> "%temp%\f_tib11.txt"
echo %%a>> "%temp%\f_tib12.txt"
)
)
)--> 결과물입니다. 첨부 파일 참조 f_tib1.txt , f_tib11.txt , f_tib12.txt
사실 사용하는 파일명엔 괄호() , 뒤에 숫자도 붓지 않습니다(앞으론 이것 또한 주의해야 겠어요).
테스트를 위해 파일명에 공백도 포함해보고 괄호()도 숫자도 붙여 봤을뿐 입니다.
또한 리다이렉션> 을 공백없이 사용해야 합니다. 확장자를 제외한 파일이름이기 때문에
뒤의 공백을 허용하지 않습니다.(확장자를 붙이면 안되는 프로그램 때문에).
그리고 단지 결과물이 정상인지 알기위해 echo ~~ > 를 자주 사용할 뿐입니다.
위의 경우는 모두 정상적인 결과물을 얻을 수 있습니다.
-----------------------------------------------------------------------------
단계2 --------------------------------------------------------------------------
set /a num2=!i!-1
echo %num2%> "%temp%\num2.txt"
--> 리다이렉션> 을 붙여쓰면 원하는 결과물 얻지 못함(숫자가 한자리 일경우만 실패).
--> 이상한 것이 두자리 숫자인 경우는 정상인 결과를 얻을 수 있어요(num2=10 이상).for /f "tokens=1,2 usebackq delims=:" %%a in ("%temp%\f_tib11.txt") do (
if /i "%%a" == "%num1%" (
set "_tib=%%b"
echo %%b>"%temp%\d_tib.txt"
)
if /i "%%a" == "%num2%" (
set "_tib_1=%%b"
echo %%b>"%temp%\d_tib_1.txt"
)
if /i "%%a" == "!i!" (
set "_tib_last=%%b"
echo %%b>"%temp%\d_tib_last.txt"
)
)--> 결과물입니다. 첨부 파일 참조 d_tib.txt , d_tib_1.txt , d_tib_last.txt
위의 경우는 모두 정상적인 결과물을 얻을 수 있습니다.
-----------------------------------------------------------------------------위의 경우(for if echo~~)처럼 혼용해 사용하면 모두 정상적인 결과물을 얻을 수 있어요(이건 참 다행이네요).
문제는 단독으로 echo > 사용과 독립적으로 if 문을 사용할 경우인것 같네요.
여러 경우를 시도해보니 괄호()위치, 뒤에 숫자(한자리 숫자)가 문제가 되더군요(왜 이게 문제가 되는거야 참...)앞으로 사용시는 주의해야 겠어요(정답은 1칸 공백주고 사용하는 것이 원칙!).
여러모로 도움을 주셔서 감사드립니다.
편안한 하루 되세요. -
우리집 2014.09.27 10:20
방법을 찾았습니다.윈포의 ① suk 님께서 작성하신 배치파일에서 방법을 구했습니다.(감사해요)이런식으로 코딩한 글을 많이 보긴 헀는데 사용해 본적은 없거든요.set "test1=7win_20130210오후1035(m)2"echo %test1%>"%temp%\임시1.txt">"%temp%\임시1.txt" echo %test1% -->이런식으로 코딩하면 잘 됩니다.
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
51903 | 소프트웨어| 자바 물어볼것이 있어서 질문남깁니다. [1] | 별마 | 922 | 09-26 |
51902 | 기 타| 마이크로 sd 카드 포맷이 안되요 [8] | 어느날갑자기 | 4765 | 09-25 |
51901 | 윈 도 우| Win9 프리뷰버전 받으신분? [1] | 별마 | 1420 | 09-25 |
51900 | 윈 도 우| 캡쳐 좀 봐주세여 [7] | 샤넬 | 1068 | 09-25 |
51899 | 소프트웨어| 동영상 편집 프로그램 부탁드립니다. [5] | 버들도령 | 1896 | 09-25 |
51898 | 소프트웨어| Photoshop CC 2014 15.2 시작시 팝업창 제거방법 [4] | DuDu | 1860 | 09-25 |
51897 | 소프트웨어| 비주얼 베이직과 닷넷 프레임워크 그리고 윈도우PE [2] | Stileto | 1207 | 09-25 |
51896 | 윈 도 우| 파일 공유(SMB)와 관련된 서비스가 무엇무엇이 있나요? [1] | 어우복구머 | 933 | 09-25 |
51895 | 하드웨어| 노트북 i5 3세대와 4세대의 성능차이 좀... [5] | 해피투게더 | 2817 | 09-25 |
51894 | 윈 도 우| VHDMAN 을 이용한 ESD로 설치시에 [5] | 여덟번째뱀 | 1067 | 09-25 |
51893 | 기 타| 제가요,,,,,,,,,,,,,,,, [1] | ㄷㄱ | 906 | 09-25 |
51892 | 하드웨어| 구형 사운드 카드가 있는데요.. [8] | 월장 | 1258 | 09-25 |
51891 | 소프트웨어| 재질문 PE 질문입니다. PE 파일을 iso로 만들려고 하는데 ... [5] | 하하히 | 1085 | 09-25 |
51890 | 소프트웨어| PE 질문입니다. PE 파일을 iso로 만들려고 하는데 울트라is... | 하하히 | 974 | 09-25 |
51889 | 하드웨어| 중소기업제품은 왜 불량화소가 많은지요? [6] | joe | 1343 | 09-25 |
» | 윈 도 우| 배치파일 Echo 명령과 출력 리다이렉션(>, >>) [7] | 우리집 | 1895 | 09-25 |
51887 | 윈 도 우| 윈도우비스타에서는 "내컴퓨터" -->"속... | 칼슘 | 1296 | 09-25 |
51886 | 하드웨어| 손에 촥 감기는 마우스 추천해주세요. [3] | toto | 1076 | 09-25 |
51885 | 윈 도 우| 태블릿PC에서 사용 할 단축키 런처 프로그램 같은게 있을까요? [3] | NineHeart | 1203 | 09-25 |
51884 | 소프트웨어| Unlocker Portable 우클릭 레지에 등록이 안됨 | 비숍 | 1116 | 09-25 |
리다이렉션 (>, >>) 앞뒤로 공백을 1칸씩 두면 됩니다.
cmd 명령은 공백 단위로 구문을 구별하기 때문입니다.
> : 파일을 무조건 새로 만듬(기존 내용 지워짐)
>> : 기존 파일에 추가함(기존 내용에 덧붙임)