윈 도 우 배치파일 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 | - | - |
51981 | 윈 도 우| 윈도우 8.1 설치 할 때 질문좀요 [2] | skypoll | 1115 | 09-30 |
51980 | 소프트웨어| 오디오 드라이버 [1] | 산골나그네 | 1263 | 09-30 |
51979 | 기 타| 바이두(Baidu) 새 Bit 다운로드 .... 문제 [4] | 블루마운틴 | 1995 | 09-30 |
51978 | 윈 도 우| BitLocker 윈도우7 프로에서는 사용 못하나요? [1] | skypoll | 1089 | 09-30 |
51977 | 윈 도 우| Q : 여러확장자를 하나의 연결프로그램으로 지정방법 | KyleM | 1019 | 09-30 |
51976 | 소프트웨어| VHDman1.51 사용 문의 [14] | 박삿갓 | 1155 | 09-30 |
51975 | 윈 도 우| 윈도우 부팅할 때 이전에 띄워둔 폴더가 자동으로 뜨네요. [2] | 뚱굴이 | 1054 | 09-30 |
51974 | 소프트웨어| 윈도우 8.1에 윈도우무비메이커 사용~ [1] | 레옹 | 1949 | 09-30 |
51973 | 소프트웨어| grub4dos에서 pxe scan이 안 나오게 할 수 있나요? [2] | brucex | 967 | 09-30 |
51972 | 윈 도 우| 윈도우8.1 설치질문 좀 할게요 [3] | 캬캬캬 | 1084 | 09-30 |
51971 | 윈 도 우| 인터넷 끊김현상 아리송하네요.. [3] | 이리도 | 1515 | 09-30 |
51970 | 기 타| 이어폰 비싼거 돈 값 하나요? [6] | CT | 1352 | 09-30 |
51969 | 기 타| uTorrent 2.0.4 이것 사용가능한 버전인가요 [11] | 토발즈 | 1760 | 09-30 |
51968 | 윈 도 우| 다음 까페 스크립트요...똑 막힌건가요? [4] | 브로스냠 | 1190 | 09-30 |
51967 | 윈 도 우| 원도우7 통합한22개 에디션 업데이트 통합방법 문의? [5] | 개미투자 | 1437 | 09-29 |
51966 | 윈 도 우| VLSC 가입 되어 있으면 MSDN이나 테크넷 무료로 사용 가능... [2] | Stan-Alone | 1265 | 09-29 |
51965 | 윈 도 우| 윈도우부팅시 Windows 서비스에 연결하지 못했습니다. [3] | 흑단 | 4771 | 09-29 |
51964 | 하드웨어| HDD가 4개라 CD롬 연결할 곳이 없어요 [9] | 눅스야 | 1495 | 09-29 |
51963 | 모 바 일| 베가x [1] | 윈도우8있 | 4296 | 09-29 |
51962 | 윈 도 우| xcopy 배치파일 [3] | 뒤로가기 | 2561 | 09-29 |
리다이렉션 (>, >>) 앞뒤로 공백을 1칸씩 두면 됩니다.
cmd 명령은 공백 단위로 구문을 구별하기 때문입니다.
> : 파일을 무조건 새로 만듬(기존 내용 지워짐)
>> : 기존 파일에 추가함(기존 내용에 덧붙임)