기 타 배치파일 질문 올립니다.
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 | - | - |
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 |
96046 | 소프트웨어| NetOptimizer 무료 버전 혹시 있나요?...(냉무) [1] | 어리버리힙 | 186 | 02-05 |
96045 | 윈 도 우| Windows 10 IoT Enterprise LTSC 21H2에서 [3] | 엉구업당 | 626 | 02-05 |
96044 | 기 타| dvi to hdmi 케이블(2.0)로 연결시 "신호없음" [5] | 처음처럼님 | 782 | 02-05 |
96043 | 윈 도 우| 윈도우10 에서 익스플로러 사용? [8] | U미니멀៖ | 693 | 02-05 |
96042 | 윈 도 우| 윈도우 자판 한영 순서? 질문 드립니다! [4] | U미니멀៖ | 299 | 02-04 |
96041 | 하드웨어| 그래픽카드 불량인걸까요? [17] | 익명 | 786 | 02-04 |
96040 | 윈 도 우| All Users\Application Data 액세스권한 부여 [4] | sum | 299 | 02-04 |
96039 | 소프트웨어| [질문] 경로 포함 ZIP 파일 만들기 [8] | 마루나래 | 432 | 02-04 |
96038 | 소프트웨어| 시놀로지에서 SSD캐시적용방법은? [5] | 개척자 | 297 | 02-04 |
96037 | 윈 도 우| 윈도우11 깔았더니 윈도우디펜더가 먹통이네요,,, [1] | 어험 | 527 | 02-04 |
96036 | 소프트웨어| 오피스365 설치할 때 원드라이브 관련 [4] | NEVERLAND | 349 | 02-04 |
96035 | 소프트웨어| 포터블실행시... [2] | Forum | 437 | 02-04 |
96034 | 윈 도 우| 하드디스크가 2개일 때 pe 메뉴 추가 방법? [1] | ksire | 296 | 02-04 |
96033 | 윈 도 우| VHD 로 윈도우 10 깔아두고 처음 설치시 오류 [9] | 퐁이 | 439 | 02-04 |
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