윈 도 우 배치파일 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 | - | - |
» | 윈 도 우| 배치파일 Echo 명령과 출력 리다이렉션(>, >>) [7] | 우리집 | 1877 | 09-25 |
51888 | 윈 도 우| 윈도우비스타에서는 "내컴퓨터" -->"속... | 칼슘 | 1276 | 09-25 |
51887 | 하드웨어| 손에 촥 감기는 마우스 추천해주세요. [3] | toto | 1058 | 09-25 |
51886 | 윈 도 우| 태블릿PC에서 사용 할 단축키 런처 프로그램 같은게 있을까요? [3] | NineHeart | 1183 | 09-25 |
51885 | 소프트웨어| Unlocker Portable 우클릭 레지에 등록이 안됨 | 비숍 | 1102 | 09-25 |
51884 | 하드웨어| 노트북 무선랜 업글 관련 문의좀 드립니다.. [6] | Jeonv1004 | 1309 | 09-25 |
51883 | 윈 도 우| PE 를 VHD 로 부팅 할 때 [2] | 박삿갓 | 1069 | 09-24 |
51882 | 윈 도 우| 윈도우 8.1에서 바탕화면에 생성된 아이콘순서 바꾸기가 안... [6] | 데자니어 | 1725 | 09-24 |
51881 | 윈 도 우| 이 망고의 궁금한 점 질문 드립니다.. [2] | 꾸비 | 1029 | 09-24 |
51880 | 윈 도 우| 부팅관련 문의좀 드리겠습니다. [2] | 아이템 | 860 | 09-24 |
51879 | 소프트웨어| 하드디스크 복구프로그램 어떤게 좋나요? [10] | 뒤로가기 | 1359 | 09-24 |
51878 | 윈 도 우| 제가요./. [1] | 별마 | 829 | 09-24 |
51877 | 서버 / IT| tnsname.ora 다룰줄 아시는분 봐주십시요 ㅠㅠ [3] | 어우복구머 | 1750 | 09-24 |
51876 | 윈 도 우| 배치파일 if ~ else 문에서 변수지정 [6] | 우리집 | 1391 | 09-24 |
51875 | 윈 도 우| 인터넷 익스플로러가 백그라운드에 남는 이유가 뭘까요? [2] | 원초아 | 1713 | 09-24 |
51874 | 소프트웨어| WinClon5프리미엄...백업 복원 질문요 [1] | 뷰티뚱쓰 | 1143 | 09-24 |
51873 | 하드웨어| 불량섹터가 떴는데, 계속 써도 될까요? [5] | 트루스토리 | 1206 | 09-24 |
51872 | 윈 도 우| 윈도우7 "m" 타이핑 시 공백 출현 | 앙리 | 1092 | 09-24 |
51871 | 윈 도 우| vhd 윈7 프로페셔널 관련 질문입니다. [1] | 두잉 | 925 | 09-24 |
51870 | 윈 도 우| 로고 어떻게 바꿀수 있나요?? [2] | 꾸비 | 1040 | 09-24 |
리다이렉션 (>, >>) 앞뒤로 공백을 1칸씩 두면 됩니다.
cmd 명령은 공백 단위로 구문을 구별하기 때문입니다.
> : 파일을 무조건 새로 만듬(기존 내용 지워짐)
>> : 기존 파일에 추가함(기존 내용에 덧붙임)