디렉토리 트리에서 특정 파일 확장자를 가진 각 파일의 디렉토리 이름을 얻는 방법은 무엇입니까?

Thordiato

지정된 폴더 / 디렉터리 (하위 폴더 / 하위 디렉터리 포함) 내에서 확장명이 * .txt 인 각 파일의 디렉터리 이름을 가져와야합니다 .

여기에서 해결책을 시도했습니다 : 전체 경로의 상위 폴더

그러나 set "myPath=%%~Pa"아래 코드에서는 아무 작업도 수행하지 않는 것 같습니다.

@echo off

cd /d "F:\Game\"
for /r %%f in (*.txt) do (
    echo file: %%f
    set "myPath=%%~Pa"
    echo myPath: %myPath%
    for %%a in ("%myPath:~0,-1%") do (
        set "myParent=%%~Na"
        echo %myParent%
    )
)
pause.

이러한 파일의 경우 :

F:\Game\file1.txt
F:\Game\first_subfolder\file2.txt
F:\Game\first_subfolder\hellothere\file3.txt
F:\Game\first_subfolder\hellothere\lala\file4.txt

나는 그들 각각에 대한 디렉토리의 이름을 기대합니다.

Game
first_subfolder
hellothere
lala

디렉토리 트리의 각 텍스트 파일에 대한 디렉토리 이름을 얻는 방법은 무엇입니까?

Mofi

먼저 명령 프롬프트 창을 열고 set /?첫 페이지의 맨 위에서 마지막 페이지의 맨 아래까지 출력 도움말을 실행 하고 읽는 것이 좋습니다 . 특히 지연된 환경 변수 확장에 대한 섹션이 있습니다. 참조 : 변수가 예상대로 작동하지 않습니다 .

그러나 지연된 확장 을 사용하지 않고 디렉토리 트리에서 각 * .txt 파일에 대한 디렉토리 이름을 가져올 수 있습니다.

@echo off
for /R %%I in (*.txt) do for %%J in ("%%~dpI.") do (
    echo Text file: %%I
    echo Directory: %%~nxJ
)

참고 : %%~nxJ 이 배치 파일이 드라이브의 루트에서 실행되고이 드라이브의 루트에 * .txt 파일이있는 경우은 빈 문자열입니다.

여기서 트릭 %%~dpI은 백 슬래시로 끝나는 현재 텍스트 파일의 전체 경로로 확장됩니다. .폴더를 참조하기 위해이 경로 문자열에 연결됩니다. 그런 다음 %%~nxJ경로가없는 폴더 이름으로 확장됩니다. Microsoft 설명서 페이지 Naming Files, Paths 및 Namespaces를 참조하십시오 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관