윈 도 우 조건을 따져서 파일을 옮기는 배치파일을 만들고자 합니다
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 | - | - |
14562 | 기 타| https://krakenfiles.com/ 에서 다운은 어떻게 하는건가요? [5] | 좋게멋지게 | 401 | 01-15 |
14561 | 윈 도 우| 윈도10 자체 복원 오류 가 생기네요ㅠ [4] | younz | 401 | 01-31 |
14560 | 소프트웨어| 쳇 GPT 에 대해서 도움을 부탁합니다, [7] | 좋은데이 | 401 | 05-28 |
14559 | 윈 도 우| 윈도우 SSD의 전송 모드 질문 입니다 [2] | 토니 | 401 | 05-25 |
14558 | 윈 도 우| WSA 윈도우 10 또는 11 홈 버전에 설치 가능한가요? [4] | 현민지 | 401 | 12-16 |
14557 | 기 타| 온라인 보건증 발급받는 방~법아시는분 ㅠㅠ [2] | 하얀또잉 | 401 | 11-19 |
14556 | 하드웨어| NVMe 디스크온도, 디스크온도2 ? [2] | billy | 401 | 08-30 |
14555 | 윈 도 우| ‘기본 프로그램’을 바탕화면 우클릭 메뉴에 넣는 방법이 있... [2] | 하람 | 401 | 05-09 |
14554 | 소프트웨어| 웹체크 검사 [5] | 홍낄똥 | 401 | 04-19 |
14553 | 윈 도 우| 윈7 설치하고 재부팅하니 모니터 출력이안됩니다 도와주세요.. [2] | 컴맹구출 | 401 | 03-21 |
14552 | 윈 도 우| 엣지의 특정 사이트를 명령어로 열 수 있을까요? [4] | 투윤 | 401 | 05-03 |
14551 | 기 타| 네이버웨일의 모든 설정을 백업하고자 하는데요 [3] | #cortana# | 401 | 03-14 |
14550 | 윈 도 우| 오래된 윈도우 자료문의 [3] | 여니미니아 | 401 | 01-09 |
14549 | 기 타| 유튜브 뮤직에서 음원 다운로드 방법 [5] | 안녕윈도 | 401 | 09-26 |
14548 | 윈 도 우| 만능 윈도우 드라이버 설치 화면이 검정으로 변하는이유는 ... [2] | 마쉽 | 401 | 08-15 |
14547 | 서버 / IT| 네트워크 구성관련 [6] | First. | 401 | 06-08 |
14546 | 소프트웨어| 원격 프로그램중에 마우스 제어 잘 되는거 뭐가있을까요? [4] | 루나헌터 | 401 | 05-02 |
14545 | 하드웨어| CYNEX, 삼성 두 회사 메모리를 같이 사용해도 문제가 발생... [10] | 인연아빠 | 401 | 03-01 |
14544 | 소프트웨어| 포토샵 관련입니다. [2] | 타임머신 | 401 | 03-02 |
14543 | 윈 도 우| msconfig 부팅 내용이 비었습니다. [5] | 현민지 | 401 | 02-11 |
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