기 타 배치파일 질문 올립니다.
2023.01.12 07:23
C_Backup 이라는 폴더가 있다고 가정합니다.
이 폴더는 사용자의 입력을 받아 어느 드라이브 어느 경로에나 만들어질 수 있는 폴더입니다.
이런 경우,
어느 드라이브, 어느 경로에 만들어져 있든, C_Backup 이라는 폴더를 찾아서,
그 경로를 변수로 저장하는 배치 파일을 어떻게 작성해야 하는지 궁금해서 글 올립니다.
댓글 [8]
-
집앞의_큰나무 2023.01.12 07:38
-
가로등 2023.01.12 08:00
감사합니다.
드라이브 루트에 있는 경우 말씀하신대로 하니 잘 됩니다.
혹시 C_Backup 폴더가 드라이브 루트가 아니라 어느 드라이브 2,3단계 하위에 만들어져 있을때
그 경로를 찾아서 그 경로를 변수로 저장하는 것이 가능할 지 궁금합니다.
-
메리아 2023.01.12 14:42
집앞의_큰나무 님 코드를 토대로
루트가 아닌 하위경로에 탐색하는 예제를 만들어보았습니다.
단, 당연히 시간이 오래 걸리므로 시간이 중요하다면 search everything sdk를 이용해야합니다.
(cmd버전 있음)
다만 아무리 search everything cmd버전을 쓰더라도 일단 한번 실행시켜야하기 때문에
만약 신규 컴에서의 빈번한 작업이 필요하다면 무의미합니다. 매번 새로 db를 작성해야하거든요.
자주 쓰는 컴에서나 쓸만함.
그땐 그냥 아래코드 그대로 쓰셔야...
----------------------------------------------------
@echo offSETLOCAL ENABLEDELAYEDEXPANSIONpushd "%CD%"CD /D "%~dp0"echo.echo.echo 현재경로echo %~dp0echo 현재드라이브echo %~d0echo.echo.::Backup_Chkset is_exist=FALSE@REM set "txt_search=*임시*"@REM set "txt_search=임시"set "txt_search=C_Backup"for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (if exist "%%a:" (echo 탐색 %%a:cd /d %%a:\for /f "tokens=*" %%b in ('dir !txt_search! /ad/o/b/s 2^> nul') do (echo 결과 : %%bset my_drv=%%aset "my_path=%%b"set is_exist=TRUE@REM 여러개가 나오면 맨 마지막것이 걸리므로 알아서 조정할것.@REM 1개나 첫번째만 확인되면 된다면 아래 주석해제@REM CD /D "%~dp0"@REM echo.@REM echo 탐색완료@REM goto next)))CD /D "%~dp0"echo.echo 탐색완료if "!is_exist!"=="TRUE" (goto next)echo.&echo.&echo.echo. 전체 드라이브 중에 !txt_search! 폴더는 없습니다.pause >nulgoto :eof:nextecho.&echo.&echo.echo 결과 : [%my_drv%] 드라이브에 [!txt_search!] 폴더가 있습니다.echo 경로 : !my_path!:: 여기에 다음 진행할 구문을 적어주면됩니다. %drv%:\C_Backup@REM --------------------------------------------------------------CD /D "!my_path!"@REM --------------------------------------------------------------echo.echo. 전체작업 완료pause >nulgoto :eof
-
메리아 2023.01.12 14:46
참고로
dir !txt_search! /ad/o/b/s 2^> nul
이것에 대해 설명하자면
dir : 경로 목록조회
!txt_search! : 검색어로서 미리 설정한 변수를 읽음. for문 안에서는 되도록 %대신 ! 쓰는게 좋음(다만 이건 초기설정에 따름)
*나 ? 같은 cmd창에서 쓰는 기본 와일드카드 사용가능
/ad : 디렉토리만
/o/b/s : dir에서 짜잘한거 쳐내고 전체경로만 보여주는 옵션( /s가 하위경로)
2^> nul : 에러숨김(검색된거 없을때 표시 숨겨서, 보기 좋으라고 한거라 없어도 됨. 오히려 에러 꼭 봐야하면 삭제할것.)
-
집앞의_큰나무 2023.01.12 16:03
앗,
한가지 소중한것을 더 배우고 갑니다.
잘 활용하겠습니다.
-
가로등 2023.01.12 16:40
말씀하신대로 검색 시간이 오래 걸리는 문제는 있는데, 소스 잘 작동합니다.
큰나무님, 메리아님 바쁜 시간에 글 올려주셔서 감사합니다. 덕분에 하나 하나 배워가는 것 같습니다. ^^
-
지후빠 2023.01.12 19:30
https://windowsforum.kr/lecture/18898267 에 관련 내용 게시하였습니다. 참고해보십시오. ^^
-
가로등 2023.01.12 20:12
감사합니다. 잘 참고해서 배워보도록 하겠습니다.
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
96066 | 기 타| 크롬 크릭시 새탭 [4] | 화랑이 | 431 | 02-07 |
96065 | 윈 도 우| 바탕화면 파일을 새로고침을 해야 파일이 보입니다 | ksire | 192 | 02-07 |
96064 | 하드웨어| GA-H61M-S2V-B3(rev 1.0) UEFI GPT 방식 지원 문의드립니다. [2] | 개울소리 | 517 | 02-07 |
96063 | 윈 도 우| ssd 부착하면 부팅이 안됩니다. [6] | 개울소리 | 1024 | 02-06 |
96062 | 소프트웨어| 듀얼바이오스(GA-B75M-D3H)복구방법 문의? [6] | 맹물 | 691 | 02-06 |
96061 | 소프트웨어| EaseUS Todo Backup 프로그램 유료로 쓰고 싶은데.. [2] | 끼야 | 455 | 02-06 |
96060 | 윈 도 우| 무인 응답파일로 설치 시 배치 실행 질문 [4] | 컨피그 | 270 | 02-06 |
96059 | 기 타| 오토핫키를 사용하는데 도스배치파일 또는 도스명령어을 중... [5] | 열심히하자 | 307 | 02-06 |
96058 | 하드웨어| asus tuf b360보드 심야시간에 자동종료 원인이 뭘까요. ... [3] | 과불급 | 245 | 02-06 |
96057 | 기 타| 휠 클릭하기 쉬운 마우스 [1] | 최강미뉴 | 280 | 02-06 |
96056 | 윈 도 우| pe 끌어오기 찾아요 ㅠㅠ [2] | 천혜향 | 352 | 02-06 |
96055 | 소프트웨어| 한<->영 변환 프로그램 [12] | 읍민Kaine | 632 | 02-06 |
96054 | 윈 도 우| 윈도우 RDP 처럼 서로 다른 화면 원격제어가 가능한 프로그... [5] | 아우릭 | 340 | 02-06 |
96053 | 소프트웨어| 팟플레이어 잘아시는 분께 여쭤봅니다. [4] | reg | 546 | 02-06 |
96052 | 소프트웨어| Macrium Reflectv 8에서 [1] | 엉구업당 | 264 | 02-06 |
96051 | 소프트웨어| 홈/프로 인증관련 질문있습니다!! [1] | 초코신 | 406 | 02-06 |
96050 | 기 타| 안드로이드 폰에 침입한 멀웨어로 부터 공유기가 공격받을 ... [4] | 뷰리풀투데 | 373 | 02-06 |
96049 | 윈 도 우| 컴퓨터가 먹통이 되서 이벤트 로그를 올립니다. 봐주세요 ㅠ [10] | 바수 | 507 | 02-06 |
96048 | 윈 도 우| vm win98 [1] | 메인보드 | 379 | 02-05 |
96047 | 소프트웨어| 프로그램 한글화 작업은 어렵나요? [5] | -가츠- | 479 | 02-05 |
SUK님한테서 얻고 배웠으며
자주 사용하는것이라서 ....
이런식으로 사용하고 있습니다.
모든 드라이브 중에서 C: 는 제외 한것이고요
한글이 있으니 인코딩을 ansi로 저장해보세요
---------------------------
@echo off
::Backup_Chk
for %%a in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist %%a:\C_Backup (set drv=%%a& goto next)
)
echo.&echo.&echo.
echo. 전체 드라이브 중에 C_Backup 폴더는 없습니다.
pause >nul
exit
:next
echo.&echo.&echo.
echo. %drv% 드라이브에 C_Backup 폴더가 있습니다.
:: 여기에 다음 진행할 구문을 적어주면됩니다. %drv%:\C_Backup
pause >nul
C_BackupCheck.cmd