윈 도 우 조건을 따져서 파일을 옮기는 배치파일을 만들고자 합니다
2018.01.07 00:26
일단 제가 원하는 대로 어느정도는 만들었습니다만, '만약 타겟 폴더가 비어있다면 타겟 폴더를 삭제한다'라는 조건을 넣고 싶은데 이상한 문구가 자꾸 뜨네요. 작동은 일단 합니다만, 이 오류가 굉장히 거슬립니다.
Make Screenshots Folder.
파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문이 잘못되었습니다.
계속하려면 아무 키나 누르십시오 . . .
파일을 찾을 수 없습니다.
계속하려면 아무 키나 누르십시오 . . .
'파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문이 잘못되었습니다.'나 '파일을 찾을 수 없습니다.'가 뜨는데, 이거 안뜨게 적당히 수정하고 싶은데, 어떻게 해야할까요.
사용중인 배치파일은 다음과 같습니다.
@echo off
SET OFolder="D:\[중간생략]\screenshots"
SET TFolder="%HomeDrive%%HomePath%\Desktop\Screenshots"
IF EXIST %TFolder% (
echo Already Screenshots Folder Exists. Using That One.
GOTO MOVPRT
)
IF NOT EXIST %TFolder% (
echo Screenshot Folder Not Exists. Making Screenshots Folder.
mkdir %TFolder%
)
:MOVPRT
move "%OFolder%\*" "%TFolder%"
pause
dir /a-d /b "%TFolder%\*" && (
echo Screenshot File exists
) || (
echo Screenshot File Not Exists. Deleting Target Folder.
rmdir %TFolder%
)
pause
일부러 뭐가 문제인지 알아보려고 pause 두번 넣었는데, 원래는 없는게 정상입니다.
댓글 [9]
-
adda 2018.01.07 05:22
-
TetraTheta 2018.01.07 16:03 첫번째로 실행할때는 잘 옮겨오는데, 두번째로 실행하면 이미 있던 스크린샷 폴더를 날려버립니다... 안에 있는 파일까지도요. 으악...
-
adda 2018.01.07 19:12
:MOVPRT
set /a File=0
for /f "tokens=* usebackq" %%a in (`DIR "%OFolder%\*" /b`) do set /a File=File+1
if %File% geq 1 move "%OFolder%\*" "%TFolder%"
set /a File=0
for /f "tokens=* usebackq" %%a in (`DIR "%TFolder%\*" /b`) do set /a File=File+1
if %File% geq 1 (
echo Screenshot File exists
pause
exit
)rmdir /s /q %TFolder%
echo Screenshot File Not Exists. Deleting Target Folder.
pause
exit조금 바꾸었습니다. -
TetraTheta 2018.01.07 20:33 테스트 해보니 잘 되네요! 감사합니다!
-
로또2등 2018.01.07 10:08 와아 신기하네요
-
suk 2018.01.07 17:33
>nul 2>nul 을 명령어 뒤에 추가하시면 에러 메시지가 나오지 않습니다
2군데만 추가하시면 될 겁니다. 여러 상황으로 테스트하여 정상 동작하는걸 확인했습니다
move "%OFolder%\*" "%TFolder%" >nul 2>nul
dir /a-d /b "%TFolder%\*" >nul 2>nul && (
-
TetraTheta 2018.01.07 20:35 감사합니다! 결과가 깔끔하면 좋죠!
그런데 >nul 2>nul의 뜻이 '결과도 보내버리고 오류도 보내버리고' 맞나요? 리눅스 공부할때 2>/dev/null 이 오류를 보내버린다고 배웠는데 비슷한건가 싶어서 여쭤봅니다.
-
suk 2018.01.08 01:51
네, bat 파일은 다양한 방법으로 가능합니다만, 최대한 본문에 올리신 것에서 수정을 적게 하는 방법으로 올린 것입니다
>nul 2>nul 는 정상적인 실행 결과도 나오지 않고, 오류 메시지도 나오지 않는 것입니다.
결국 아무런 메시지도 나오지 않는 것입니다.
>nul 만 하면 정상적인 결과값만 보여주지 않습니다.
에러 나는 것까지 안 보이게 하기 위하여 다양한 nul 이 있습니다만...
저는 저게 외우기 쉽더군요. 1>nul 2>nul 과 같습니다. >nul 만 해도 1>nul 로 나오더군요
처음에는 정상적인 실행 결과는 나오도록 move 부분을 이렇게 했습니다.
dir /a-d /b "%OFolder%\*" >nul 2>nul || goto next
move "%OFolder%\*" "%TFolder%"
:next
-
suk 2018.01.08 18:52
배치파일 구문상 호기심 차원에서 bat 파일 만들어봤습니다
1.원본 폴더에 파일이 있는 경우 이동하게 됩니다 [타겟 폴더가 없으면 만듭니다]
2. 바로 실행하면 이렇게 나옵니다. 원본 폴더에 파일이 없는 상태입니다
3. 타겟 폴더에 파일들을 삭제해봤습니다
타겟 폴더에 파일이 없는 경우 타겟 폴더가 삭제됩니다
4. 바로 실행해봤습니다. 타겟 폴더가 없는 경우입니다 [원본 폴더에도 파일이 없고]
어떤 경우도 에러 메시지 없이 작동합니다.
제 스타일로 전면적으로 수정한 것입니다만...사람마다 취향이 다르기 때문에 ;; 모르겠습니다.
SET OFolder=경로만 수정하여 사용하시면 됩니다. 밑에 " " 를 전부 넣었습니다.
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
72014 | 윈 도 우| 두기기 윈도우 태블릿 에 백업과 복구시. [2] | prayer | 249 | 01-07 |
72013 | 윈 도 우| 윈도우 테마 적용 전후 프레임 관련 질문있습니다 [1] | ITML | 328 | 01-07 |
72012 | 윈 도 우| 초보가 문의 드립니다 [2] | 흰구름 | 539 | 01-07 |
72011 | 윈 도 우| 탐색기 폴더별로 보기 저장? [1] | 켄치 | 329 | 01-07 |
72010 | 소프트웨어| 윈도우10 자체 깔린 백신 디펜더 사용못하게 방법 [7] | gkgk77 | 1816 | 01-07 |
» | 윈 도 우| 조건을 따져서 파일을 옮기는 배치파일을 만들고자 합니다 [9] | TetraTheta | 405 | 01-07 |
72008 | 윈 도 우| KB4056892 와 KB4058702 대해서 [3] | wildboy | 1614 | 01-07 |
72007 | 윈 도 우| 윈도우10 RS2 유지하면서 업데이트하는방법이.. [3] | 곰더리1004 | 567 | 01-06 |
72006 | 하드웨어| 인텔 CPU 보안문제 478소켓 CPU도 해당되는지요? [2] | 죠 | 555 | 01-06 |
72005 | 윈 도 우| 간단한 질문하나만 할게요. [4] | 현지니 | 301 | 01-06 |
72004 | 윈 도 우| intel CPU [2] | 무명거사 | 533 | 01-06 |
72003 | 소프트웨어| 이지드라이버팩 해당 메세지창 없에는 방법 없을까요? [2] | 지룡자 | 352 | 01-06 |
72002 | 하드웨어| 인텔 i5 2500k 안전한건가요? [3] | gkgk77 | 624 | 01-06 |
72001 | 윈 도 우| windows update [2] | 무명거사 | 475 | 01-06 |
72000 | 소프트웨어| softperfect ramdisk 기능중에서요... [4] | 코나 | 255 | 01-06 |
71999 | 기 타| 팟플 재생목록 기억 체크 풀어도 [2] | aqz | 189 | 01-06 |
71998 | 하드웨어| i5-540m 노트북입니다 [3] | 수사반장 | 281 | 01-06 |
71997 | 윈 도 우| 윈10 rs1(1607) 정상사용(?) 기간이 따로 있을까요? [3] | 길바라기 | 373 | 01-06 |
71996 | 윈 도 우| 파일이 사라지는 현상??? [2] | 바람낙엽 | 333 | 01-06 |
71995 | 소프트웨어| VM에서 디스크 포멧이 안됨 [2] | 파란하늘촌 | 197 | 01-06 |
SET TFolder="%USERPROFILE%\Desktop\Screenshots"
echo Already Screenshots Folder Exists. Using That One.
GOTO MOVPRT
)
mkdir %TFolder%
for /f "tokens=* usebackq" %%a in (`DIR "%OFolder%\*" /b`) do set /a File=File+1
if %File% geq 1 (
move "%OFolder%\*" "%TFolder%"
echo Screenshot File exists
pause
exit
)
echo Screenshot File Not Exists. Deleting Target Folder.
pause
exit